2015-01-12 59 views
0

我需要在我的中間表中的code字段上執行where條件。我的兩個模型是;與where子句的雄辯關係

class Agreement extends Eloquent { 

    protected $table = 'agreements'; 

    public function clients(){ 
    return $this->belongsToMany('Client', 'client_agreements')->withPivot('start_date', 'expire_date', 'code'); 
    } 
} 

而且;

class Client extends Eloquent { 
    public function agreements(){ 
    return $this->belongsToMany('Agreement', 'client_agreements')->withPivot('start_date', 'expire_date', 'id', 'code'); 
    } 
} 

我的控制器目前是;

public function show($code, $client_id) 
{ 
    // 
    $client = Client::with('agreements')->find($client_id); 

    $client_agreement = $client->agreements; 

} 

我想我需要擴大$client->agreements;代碼,包括上$code WHERE條件。我已經嘗試了很多不同的組合,但只是不斷返回相同的調用未定義的方法錯誤。

我試過類似的東西;

$client_agreement = $client->agreements->where('code', '=', $code); 
$client_agreement = $client->agreements->code->find($code); 
$client_agreement = $client->agreements->pivot->code->find($code); 

我總是得到同樣的錯誤。我對物體不太好,所以也許我看着這一切都是錯誤的。它是如何完成的?

回答

3

您需要訪問->relation()->relation(這是動態屬性調用):

$client_agreement = $client->agreements() 
        ->wherePivot('code', '=', $code) 
        ->first();