我需要在 Laravel 5.1 中合并集合或数组(可以是其中之一),但我在 Builder.php 第 2071 行中收到错误 BadMethodCallException:调用未定义的方法 Illuminate\Database\Query\Builder::合并()
当我从头开始创建一个集合时,我可以合并到它,但我无法合并到 Eloquent 查询的结果,我认为这也是集合。但也许事实并非如此?
给出错误的代码:
$user=User::where('user_last_name', 'Doe')->first();
$tomerge = collect(['book' => 'desk', 'foot' => 'chair']);
$newcollect = $user->merge($tomerge);
如果我改为 $tomerge->merge($user) 它可以工作,但这不是我真正需要的。有没有办法按照我想要的方式使用合并?
最佳答案
回答您关于为什么它不起作用的问题...
$user = User::where('user_last_name', 'Doe')->first();
这是模型的单个实例。不是一个集合。 Eloquent 模型没有 merge
方法。
如果您想将属性附加到 Eloquent 模型,最简单的方法可能是使用 $appends
属性和适当的访问器。例如,在您的用户模型中..
protected $appends = ['book', 'foot'];
public function getBookAttribute()
{
return 'desk';
}
public function getFootAttribute()
{
return 'chair';
}
但是,请注意,这将影响您的用户模型的每个实例。
关于laravel - 无法合并 Laravel 中的 Eloquent 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33654225/