2015-11-11 27 views
2

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

当我从头开始创建集合时,我可以合并到它,但我无法合并到我以为是集合的Eloquent查询的结果。但也许这不是事实?这给出了错误

代码:

$user=User::where('user_last_name', 'Doe')->first(); 
$tomerge = collect(['book' => 'desk', 'foot' => 'chair']); 
$newcollect = $user->merge($tomerge); 

如果我不是做$ tomerge->合并($用户)它的工作原理,但是这不是我的实际需要。有没有办法像我想要的那样使用合并?

回答

5

要回答你的问题,为什么它不工作...

$user = User::where('user_last_name', 'Doe')->first(); 

这是一个模型的一个实例。不是集合。雄辩模型没有merge方法。

如果要将属性附加到Eloquent模型,最简单的方法可能是使用$appends属性和相应的访问器。例如,在您的用户模型中。

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

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

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

+0

谢谢,托马斯金!没有收集解释了这个问题。我能够遍历我想要添加的值并将它们逐个地粘贴在一起。也许不是我最终的最优雅的解决方案,但它现在起作用,我知道我需要尝试另一种方式。 :) – llhilton