#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. да, спасибо, для них лучше всего подходит сочетание двух. Спасибо, я даже не рассматривал кеш