2016-09-13 155 views
0

我正在關注一個tutorial,您可以將關係保存在一個表中以確定是否用戶是另一個用戶的朋友,反之亦然。Eloquent致命錯誤:調用未定義的方法Eloquent Collection :: addEagerConstraints()in illuminate database Eloquent Builder.php on line 451

在我的情況下,我需要保存在關係表boundTogether_projects那些綁定在一起的項目。

所以Project.php模型中,我創建了以下雄辯的關係:

<?php 
    /*** Bound together projects ***/ 
    public function projectsBoundToThisOne(){ 
     return $this->belongsToMany('Models\User\Project', 'boundTogether_projects', 'bound_id', 'project_id'); 
    } 
    public function boundTo(){ 
     return $this->belongsToMany('Models\User\Project', 'boundTogether_projects', 'project_id', 'bound_id'); 
    } 
    public function boundTogetherProjects(){ 
     return $this->projectsBoundToThisOne()->wherePivot('bound',true)->get()->merge($this->boundTo()->wherePivot('bound', true)->get()); 
    } 

這是行不通的,因爲我得到以下錯誤:

Fatal error: Call to undefined method Illuminate\Database\Eloquent\Collection::addEagerConstraints() in \illuminate\database\Eloquent\Builder.php on line 451

貌似問題就來了正確的當我將這種方法稱爲急切加載時。這就是說:

$projects = Project::with('boundTogetherProjects'); 

能言善辯的版本是5.1

我缺少什麼?我如何解決它?

回答

1

這可能是因爲boundTogetherProjects不是關係法。它很容易從關係合併到另一個關係的一些數據。因此,有效的辦法是:

$projects = Project::with('projectsBoundToThisOne','boundTo'); 

,然後對每一個項目,你可以運行boundTogetherProjects拿到項目

$projects->each(function($project) { 
    dd($project->boundTogetherProjects()); 
}); 
相關問題