2015-12-15 102 views
1

我有一個項目表和一個項目表。租金錶是中間的雄辯。它顯示什麼項目租用或使用什麼項目。我如何檢索項目和所用的所有項目,而不必涉及結果中的租金。如何查詢Laravel 5.1 Eloquent

模式:

enter image description here

項目

public function rents() 
{ 
    return $this->hasMany('App\Rent'); 
} 

項目

public function rents() 
    { 
     return $this->hasMany('App\Rent'); 
    } 

租金

public function project() 
    { 
    return $this->belongsTo('Project'); 
    } 
    public function item() 
    { 
     return $this->belongsTo('App\Item'); 
    } 

謝謝您的期待。

+0

是什麼問題? –

+0

我試圖獲得所有租用項目的項目,似乎無法以某種方式得到它 – Dekoy

+0

你會分享你的數據庫設計模式嗎? –

回答

2

爲了實現你在找什麼,你需要使用一個不同的關係hasManyThrough,簡單地調整你的Project型號如下:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Project extends Model 
{ 
    public function items() 
    { 
     return $this->hasManyThrough('App\Item','App\Rent'); 
    } 
} 
+0

,這將無法正常工作。我早些時候嘗試過。原因是該項目沒有列project_id。項目根本與項目無關。唯一的共同點是在租金錶上。如果你認爲我還是錯的,請說明解決方法 – Dekoy

+0

'hasManyThrough'關係正是你正在尋找的,它將通過一箇中間表獲得關係。在這種情況下,中間表是租金錶。因此,可以使用這種關係將項目 - >租金 - >項目轉換爲項目 - >項目。你確定,你真的嘗試過這種關係,你得到了什麼錯誤? –

+0

我得到了錯誤「未找到列」與此方法 – Dekoy

相關問題