【问题标题】: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() 吗?

标签: php laravel eloquent


【解决方案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]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 2021-03-26
    • 1970-01-01
    • 2021-05-30
    • 2020-03-25
    • 2016-07-08
    • 1970-01-01
    • 2014-11-23
    相关资源
    最近更新 更多