2015-01-12 96 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();