Как отобразить всю информацию о сеансе, хранящуюся в базе данных (Laravel) - PullRequest
0 голосов
/ 31 августа 2018

Есть ли способ отобразить данные всех сеансов?

Я пробовал таким образом

 Session::all();

но он возвращает информацию о текущем пользователе, а не все сохраненные сеансы

Тогда я попробовал этот код

DB::table('sessions')->get();

извлекает все сохраненные данные, но все зашифровано, как это

  [id] => zZLNtqmennbg3gdsfdsffdstlvdZfjKtzZTP7Or6Tk
                    [user_id] => 
                    [ip_address] => 196.144.136.233
                    [user_agent] => Mozilla/5.0 (Linux; Android 7.0; SM-G610F Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.91 Mobile Safari/537.36
                    [payload] => YTozOntzOjY6Il90b2tlbiI7czo0MDoiOVJXSmdkZlFnVktNU3lVVlBQSFdKOElrRFFMVEdtYUJnMENiQzY4NSI7czo5OiJfcHJldmldfdsfdsfdfzOiJ1cmwiO3M6MzM6Imh0dHBzOi8vYXJldmlld3NhcHAuY29tL2Vycm9yXzQwNCI7fXM6NjoiX2ZsYXNoIjthOjI6e3M6Mzoib2xkIjthOjA6e31zOjM6Im5ldyI7YTowOnt9fX0=
                    [last_activity] => 1535513730

Также у меня нет user_id, так как я использую пользовательские сессии

Этот код возвращает правильные данные, но только для одного пользователя

 Session::all();

Как я могу получить все данные сессий, как это?

  ["plan_type"]=> string(7) "test" ["shop"]=> string(36) "test.test.com"  

Поскольку то, что хранится в базе данных, зашифровано, мне нужны данные пользователя, поэтому я знаю, сколько сеансов у каждого пользователя

1 Ответ

0 голосов
/ 31 августа 2018

Просто создайте свою собственную модель и используйте одну и ту же таблицу

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class CustomSession extends Model
{
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'sessions';
}

Используйте его как любую другую модель ... CustomSession::all();

Что касается расшифровки, вы можете сделать это так: https://laracasts.com/discuss/channels/laravel/accessing-the-session-payload-as-a-json-object

$payload = unserialize(base64_decode($session->payload)); // At this point you have an array

Конечно, вам придется сделать это для, а затем вы можете назначить его как

   foreach($sessions as $session){
       $session->payload = unserialize(base64_decode($session->payload));
   }

А так в комментариях по ссылке говорите:

// If you want an object instead, you could typecast it to a stdObject.
// $payload = (object) unserialize(base64_decode($session->payload));

Итак, вы можете использовать его как

$session->payload->someSome;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...