2015-11-11 31 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