2017-05-11 78 views
0

我有兩個模型。 A「Vehicle」和「Tenant」。調用未定義的方法Illuminate Database Query Builder :: vehicles()

他們有以下相互關係。

租客有許多車輛。一輛車屬於一個租戶。

對於Tenant.php:

public function vehicles() 
{ 
    return $this->hasMany('\App\Models\Vehicle'); 
} 

對於Vehicle.php:

public function tenant() 
{ 
    return $this->belongsTo('\App\Models\Tenant'); 
} 

執行此:

$this->user = $request->user(); 
    $userTenant = $this->user->tenant(); 
    $vehicle= $userTenant->vehicles()->first(); 

結果我n以下的錯誤

Call to undefined method Illuminate\Database\Query\Builder::vehicles() 

指着這一行:

$vehicle= $userTenant->vehicles()->first(); 

我不是很確定爲什麼會這樣= \

回答

1

我不能從您的帖子看到什麼關係與一個User,但tenant()(帶括號)可能返回BelongsTo或其他Relation實例,該實例正被分配給$userTenant。嘗試改變該行的版本,而括號tenant後得到租戶模型實例,而不是:

$userTenant = $this->user->tenant; 

從評論更新

,當你調用的關係作爲方法,例如

$myModel->relation()

你得到的對應關係類。當用作吸氣劑時,例如

$myModel->relation

它本質上是一樣的東西叫

$myModel->relation()->get()用於定位多個車型的關係,或致電

$myModel->relation()->first()爲針對單一模型的關係。

結帳的文檔獲取更多信息的relationship methods vs. dynamic properties

+0

你的意思是通過返回「屬於關聯」或其他「關係」的實例?當您將關係稱爲方法時,例如 –

+0

'...-> relation()'你得到相應的關係類。當用作吸氣劑時,例如'...-> relation'它和調用'...-> relation() - > get()'對於定位多個模型的關係或調用'... - > relation() - > first()'用於定位單個模型的關係。 –

+0

感謝您的解釋,我應該修改「這個」特定主題的哪部分文檔?雄辯的關係? –

相關問題