gpt4 book ai didi

php - 如何在特定索引号处将对象(模型类型对象)插入到 Laravel 中的集合对象中?

转载 作者:IT王子 更新时间:2023-10-29 00:05:12 24 4
gpt4 key购买 nike

我读过 Dayle Rees 的 Code Bright了解更多有关 Laravel 中使用的 Eloquent Collection 的信息。也做了一些其他研究,但找不到我正在寻找的答案。

我想将一个对象(Model 类型的对象)插入到一个Collection 对象的特定位置。

例如:

这是返回的集合

Illuminate\Database\Eloquent\Collection Object
(
[0] => Attendance Object
([present_day] => 1)

[1] => Attendance Object
([present_day] => 2)

[2] => Attendance Object
([present_day] => 4)

[3] => Attendance Object
([present_day] => 5)

)

正如您在上面看到的那样,[present_day] 的值范围从 1 到 5,但是值 3 在序列。现在,我真正想做的是,我想明确地将一个新的 Attendance Object 放在 Collection Object 的 [2] 索引号/位置,从而通过推送出勤对象的其余部分。我真的很难做到这一点。我怎样才能使上面的集合对象看起来像下面这样:

Illuminate\Database\Eloquent\Collection Object
(
[0] => Attendance Object
([present_day] => 1)

[1] => Attendance Object
([present_day] => 2)

[2] => Attendance Object // This is where new object was added.
([present_day] => 3)

[4] => Attendance Object
([present_day] => 4)

[5] => Attendance Object
([present_day] => 5)

)

我认为如果它是数组的话,有一些方法可以完全像这样。由于这是一个Collection,我不知道该怎么做。

注意:我不想将其转换为数组并在数组中插入。出于某种原因,我想将此输出严格保存在 Collection 对象中。

最佳答案

要将项目插入到集合中,请参阅此答案; Answer

基本上,拆分集合,在相关索引处添加项目。


您可以使用 add 方法将项目添加到 Eloquent\Collection 对象;

$collection->add($item);  // Laravel 4

$collection->push($item); // Laravel 5 

然后您可以使用sortBy 方法对集合重新排序;

$collection = $collection->sortBy(function($model){ return $model->present_day; });

这将根据您的 present_day 属性重新排序集合。


请注意,以上代码仅在您使用 Illuminate\Database\Eloquent\Collection 时才有效。如果您使用的是普通 Eloquent\Support\Collection,则没有 add 方法。

相反,您可以使用空数组偏移量,就像在普通数组中插入一个新元素一样:

$collection[] = $item;

这种形式也适用于 Collection 的 Eloquent 版本。

关于php - 如何在特定索引号处将对象(模型类型对象)插入到 Laravel 中的集合对象中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27397128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com