php - Laravel - 如何将集合复制到新变量
问题描述
我想将我的收藏集更改为一个新变量,但它改变了原来的。
我认为这是一个 JavaScript 问题,而 PHP 指的是价值。
如何将我的收藏设置为一个新变量,我可以在不更改原始收藏的情况下对其进行更改。
$pets = Pet::all();
$tmp = $pets;
$tmp->pop();
$pets->dd(); // This value also has it's last item removed.
我现在正在使用这个解决方法:
$tmp = $pets->map(function (item) {
return $item;
});
$tmp->pop();
$pets->dd(); // This value is now unchanged.
解决方案
尝试使用clone
$pets = Pet::all();
$tmp =clone $pets;
$tmp->pop();
$pets->dd();
如果您喜欢使用集合,请在AppServiceProvider
启动方法中使用宏将方法添加到集合中
public function boot()
{
Collection::macro('clone', function() {
return clone $this;
});
}
那么您可以执行以下操作
$pets = Pet::all();
$tmp =$pets->clone();
$tmp->pop();
$pets->dd();
推荐阅读
- zoho - 如何在 zoho crm 中将沙盒编辑代码部署到生产环境
- python - Kivy 为具有多个值的 Spinner Dropdown 设置高度
- c# - 如何从 C# 中的另一个方法引用一个类?
- matlab - 求解三个方程的非线性系统 (MATLAB)
- three.js - 当鼠标靠近three.js或场景中的任何对象时如何找到捕捉点?
- sql - SQL: FROM table1, table2 + WHERE 2 个条件
- node.js - 如何以角度 10 连接 socket.io?
- c# - 如何隐藏或禁用 IsWix 安装程序中的取消按钮?
- flutter - 当我结束写作时,如何在文本字段上显示复选标记图标
- laravel - 将域名从 Laravel 重新指向 Shopify