Laravel Illuminate \ База данных \ Eloquent \ Коллекция - PullRequest
0 голосов
/ 12 мая 2018

Обычно я выбираю свои предметы отдельно с помощью Eloquent Laravel

$b = Booking::where("id","=",$id)->get();

Я получаю Illuminate \ Database \ Eloquent \ Collection с одним предметом.Позже я поместил их в массив, чтобы у меня был массив этих объектов Illuminate \ Database \ Eloquent \ Collection.

Однако иногда мне нужно их больше, поэтому я делаю что-то подобное:

$bs = Booking::where("date","=",$today)->get();

Теперь это коллекция из нескольких предметов.Есть ли простой способ изменить Illuminate \ Database \ Eloquent \ Collection из нескольких элементов в массиве Illuminate \ Database \ Eloquent \ Collection с отдельными элементами?

Конечно, я могу сделать это:

$bs = Booking::where("date","=",$today)->get();
foreach ($bs as $i=>$b) $bs2[] = Booking::where("id","=",$b->id)->get();

Но повторный выбор из БД кажется довольно глупым решением.

РЕДАКТИРОВАТЬ:

Если я сделаю это, у меня будет:

  • $ bs какобъект 'Collection', содержащий 15 объектов 'Booking' внутри.
  • $ bs1 как массив, содержащий 15 объектов 'Collection', каждый из которых содержит 1 объект 'Booking' внутри.(это то, что я хочу иметь)

-> toArray () создает массив, содержащий 15 массивов.Это не то, что я хочу иметь - мне нужны объекты.Поскольку eloquent предоставляет такие функции, как поле даты, это автоматически объект DateTime

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Вы можете сделать это:

$bs = Booking::where("date","=",$today)->get();
foreach ($bs as $i=>$b) {
    $bs2[] = collect([$b]);
}

Это даст вам массив Illuminate\Support\Collection коллекций с одним элементом в каждой.

Если вам нужно Illuminate\Database\Eloquent\Collection коллекций:

$bs2[] = new \Illuminate\Database\Eloquent\Collection([$b]);
0 голосов
/ 12 мая 2018

Используйте функцию toArray() и вы готовы к работе,

$bs = Booking::where("date","=",$today)->get()->toArray();

Теперь у вас будет массив данных, возвращаемых из БД.

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