laravel - 无法合并 Laravel 中的 Eloquent 集合

标签 laravel eloquent

我需要在 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/

相关文章:

php - Laravel 4 密码和 python

Laravel 上传根路径之外的文件

php - 如何从 Controller 调用事件?命名空间

mysql - 在 laravel 中处理死锁异常

php - laravel 5如何将数据传递到 Controller 到模型

php - 指定 Eloquent 模型上可以访问和查询哪些列

php - laravel Eloquent 地按多列排序并在一列中显示

php - 使用 Laravel 4 自动生成模型类(也就是使用现有的 L4 数据库)

php - Eloquent 地选择组的最后一行

Laravel 混合 : These dependencies were not found: