无法合并 Laravel 中的 Eloquent 集合

2024-05-06

我需要在 Laravel 5.1 中合并集合或数组(可以是其中之一),但在 Builder.php 第 2071 行中收到错误 BadMethodCallException:调用未定义的方法 Illuminate\Database\Query\Builder::merge()

当我从头开始创建一个集合时,我可以合并到它,但我无法合并到 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();

这是模型的单个实例。不是一个集合。雄辩的模型不具备merge method.

如果你想将属性附加到 Eloquent 模型中,最简单的方法可能是使用$appends http://laravel.com/docs/5.0/eloquent属性和适当的访问器。例如,在您的用户模型中..

protected $appends = ['book', 'foot'];

public function getBookAttribute()
{
    return 'desk';
}
public function getFootAttribute()
{
    return 'chair';
}

但是,请注意,这将影响用户模型的每个实例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法合并 Laravel 中的 Eloquent 集合 的相关文章

随机推荐