Laravel IlluminateDatabaseEloquentCollection



我通常与雄辩的拉拉维尔分开选择我的项目

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

我得到的是一个带有一个项目的照明\数据库\雄辩\集合。 稍后我将它们放在一个数组中,以便我有一个这些 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 个"预订"对象。
  • $bs 1 作为一个数组,包含 15 个"收藏"对象,每个对象内部包含 1 个"预订"对象。(这就是我想要的(

->toArray(( 创建一个包含 15 个数组的数组。那不是我想要的——我需要这些对象。由于雄辩提供了诸如日期字段之类的功能,因此自动成为日期时间对象

使用toArray()函数,您就可以开始了,

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

现在,您将拥有从数据库返回的数据数组。

你可以这样做:

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

这为您提供了一个IlluminateSupportCollection集合的数组,每个集合都有一个项目。

如果您需要IlluminateDatabaseEloquentCollection集合:

$bs2[] = new IlluminateDatabaseEloquentCollection([$b]);

尝试以下操作。

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

您可以使用->all()方法。 您遇到的问题是因为在使用->toArray()时,Laravel 将集合转换为数组,并且作为 Arrayable 实例的嵌套对象也被转换。

这里解释 - 拉拉维尔文档

文档中all()方法

相关内容

  • 没有找到相关文章

最新更新