#php #arrays #laravel #session #collect
#php #массивы #laravel #сессия #собирать
Вопрос:
Я сохранил свои массивные данные в сеансе следующим образом.
session(['my_key' => ['car' => 123, 'motor' => 45, 'boat' => 678]]);
Чтобы получить ключи, я мог бы сделать следующее:
$car_key = session('my_key.car');
$motor_key = session('my_key.motor');
$boat_key = session('my_key.boat');
Или я могу сделать следующее:
$my_keys = session('my_key');
$car_key = collect($my_keys)->get('car');
$motor_key = collect($my_keys)->get('motor');
$boat_key = collect($my_keys)->get('boat');
Я не знаю, как session()
и collect()->get()
обрабатывать array
функции. В данном случае один подход лучше другого? Или это не имеет большого значения, даже сеанс хранит массив с большими данными?
Ответ №1:
collect()
помощник используется для создания коллекции. Во втором способе вы создаете три разные коллекции, содержащие одни и те же данные коллекции. И затем вы получаете данные по ключу из каждой коллекции. Colde кажется устаревшим и используется не так, как следовало бы.
Используйте session()
помощник
Комментарии:
1. И если я сделаю это так, $ key_collect_object = collect($my_keys); $car_key = $key_collect_object-> get(‘автомобиль’); $motor_key = $key_collect_object-> get(‘мотор’); $boat_key = $key_collect_object-> get(‘лодка’); Будет ли сессия (‘my_key.boat’) все еще быть лучше?
Ответ №2:
Это зависит.
Если вы хотите использовать методы, которые доступны только в коллекциях, то это был бы совершенно правильный способ сделать это. Более простым подходом было бы использовать:
$myCollection = collect(session('my_key'));
Таким образом, вы можете просто использовать $myCollection->get('car')
etc, а не создавать несколько коллекций.
Однако, если вы просто хотите получить значение и вас устраивает массив, вы можете просто использовать session()
помощник и вернуть данные в обычном режиме.