Поиск сеанса по подстроке ID в Laravel 8

#laravel #session

#laravel #сеанс

Вопрос:

Я пытаюсь найти сеанс по ЧАСТИ его идентификатора в laravel.

У меня есть только первая часть идентификатора, и мне нужно выяснить, связан ли с сеансом ключ / значение. Я пробовал различные формы приведенного ниже кода. Это довольно просто, но не уверен, возможно ли это в laravel.

Примечание

Я не уверен, помогает это или нет, но система laravel использует сеансы на основе файлов, а не сеансы на основе БД.

         $value = 'do i have this value';

        // Session::all()->whereLike('id','aVhN8u' . '%')->get();

        foreach( Session::all()->where('id')->startsWith('aVhN8u') as $session)
        {
            if($session->has('key', $value)
            {
                // Do something interesting
            }
        }
 

Ответ №1:

Что-то вроде этого должно сработать.

 use IlluminateSupportStr;

$value = 'my cool value';
$prefix = 'aVhN8u';
$stored = session()->all();

$filtered = collect($stored)->filter(function ($session, $key) use ($prefix, $value) {
    return Str::startsWith($key, $prefix) amp;amp; $session == $value;
})->all();
 

Комментарии:

1. Спасибо. Это именно то, что мне было нужно. Я реализовал это и не сработал, так что, возможно, где-то есть мой код. Я скоро дам вам знать.

2. Теперь я понимаю, что у меня это не сработало. , session()-> all() получает все данные сеанса для суставного сеанса. Мне нужно получить список всех файлов во storage/framework/sessions/ всех идентификаторах сеанса, а не все значения сеанса. Так что, отчасти, я думаю, я, возможно, неправильно сформулировал вопрос.

3. @IEnumerable Я думаю, что лучшим подходом было бы использовать кеш для хранения значений. Итак, вы можете помечать элементы (возможно, пользователем), а затем фильтровать их по определенному значению. Проверьте это laravel.com/docs/8.x/cache#cache-tags

4. да, спасибо, для них лучше всего подходит сочетание двух. Спасибо, я даже не рассматривал кеш