我希望在具有特定键的另一个元素之后插入一个元素到Laravel集合中.就像是:
$收藏 – >得到(5) – > insertAfter($someElement)
顺序很重要,因为我将在视图中稍后使用它来输出HTML.我查看了API并找不到合适的方法.我正在做的基本上是一个评论系统,我正在尝试添加回复其他评论的评论.
这可行吗?我正在使用Laravel 4.2.我也在考虑做很多拼接和合并,但这似乎是非常可怕的性能.
有什么建议?谢谢.
解决方法
您可以使用 – > splice().
代码如下所示:
$collection-> splice(5,[$someElement]);
它会将$someElement插入第6位.
代码如下所示:
$collection-> splice(5,[$someElement]);
它会将$someElement插入第6位.
Laravel 5.2版
如果您需要在id == 5的元素后面插入元素,那么您必须搜索该元素,然后使用found index插入新元素:
$index = $collection->search(function ($item,$key) { return $item->id == 5; }); $collection->splice($index,[$someElement]);
Laravel 4.2版
不幸的是,Laravel 4.2不接受搜索参数作为闭包,所以我们必须手动找到索引:
$foundKey = null; foreach ($collection->all() as $key => $item) { if ($item->id == 5) { $foundKey = $key; break; } } if($foundKey !== null) { $collection->splice($index,[$someElement]); }