Reputation: 1337
I've configured my web application to use database instead of file to store sessions. So far so good.
I could store a pair of key value easily like this:
$request->session()->put('current_page', $request->route()->uri());
$request->session()->save();
Now I want to make an SQL query to retrieve all sessions which have the value users paired with current_page key and where user_id IS NOT NULL.
$query = DB::table('sessions')->whereNotNull('user_id')->whereJsonContains('payload', ['currrent_page' => 'users'])->get();
The previous query returns no rows!!
Upvotes: 0
Views: 663
Reputation: 50491
Since this is base64 encoded serialized data you can loop through all the sessions and decode and unserialize their payloads to find the ones you want:
$sessions = DB::table('sessions')->whereNotNull('user_id')->cursor();
$filtered = $sessions->filter(function ($session) {
return collect(unserialize(base64_decode($session->payload)))
->get('current_page') === 'users';
});
foreach ($filtered as $session) {
...
}
Upvotes: 1