Laravel Illuminate\Database\Eloquent\Collection
Posted
技术标签:
【中文标题】Laravel Illuminate\\Database\\Eloquent\\Collection【英文标题】:Laravel Illuminate\Database\Eloquent\CollectionLaravel Illuminate\Database\Eloquent\Collection 【发布时间】:2018-10-22 15:00:13 【问题描述】:我通常使用 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 个数组的数组。那不是我想要的——我需要这些物品。由于 eloquent 提供了诸如日期字段之类的功能,因此自动成为 DateTime 对象
【问题讨论】:
您在寻找toArray()
吗?
【参考方案1】:
使用toArray()
函数,你就可以开始了,
$bs = Booking::where("date","=",$today)->get()->toArray();
现在您将获得从 DB 返回的数据数组。
【讨论】:
->toArray 创建一个数组数组。我需要数组中的对象。编辑我的问题以澄清【参考方案2】:你可以这样做:
$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]);
【讨论】:
以上是关于Laravel Illuminate\Database\Eloquent\Collection的主要内容,如果未能解决你的问题,请参考以下文章