Laravel Illuminate \ Database \ Eloquent \ Collection

时间:2018-05-12 10:12:05

标签: php laravel eloquent

我通常会用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();

但是从DB再次选择似乎是一个非常愚蠢的解决方案。

编辑:

如果我这样做,我有:

  • $ bs作为'收藏'对象,里面有15个'预订'对象。
  • $ bs1作为一个数组,持有15个“收集”对象,每个对象内部持有1个“预订”对象。 (这就是我想要的)

- > toArray()创建一个包含15个数组的数组。这不是我想要的 - 我需要这些物品。由于雄辩提供的功能,如日期字段自动为DateTime对象

2 个答案:

答案 0 :(得分:1)

使用toArray()功能,您就可以了,

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

现在您将从DB返回数据数组。

答案 1 :(得分:0)

你可以这样做:

$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]);