Eloquent 与 where 子句的关系
Eloquent relationship with a where clause
我需要在中间 table 的 code
字段上执行 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 条件。我尝试了很多不同的组合,但一直返回相同的 Call to undefined method 错误。
我尝试过类似的东西;
$client_agreement = $client->agreements->where('code', '=', $code);
$client_agreement = $client->agreements->code->find($code);
$client_agreement = $client->agreements->pivot->code->find($code);
我总是得到同样的错误。我在对象方面不是那么出色,所以也许我看错了。它是怎么做到的?
您需要访问 ->relation()
而不是 ->relation
(这是动态 属性 调用):
$client_agreement = $client->agreements()
->wherePivot('code', '=', $code)
->first();
我需要在中间 table 的 code
字段上执行 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 条件。我尝试了很多不同的组合,但一直返回相同的 Call to undefined method 错误。
我尝试过类似的东西;
$client_agreement = $client->agreements->where('code', '=', $code);
$client_agreement = $client->agreements->code->find($code);
$client_agreement = $client->agreements->pivot->code->find($code);
我总是得到同样的错误。我在对象方面不是那么出色,所以也许我看错了。它是怎么做到的?
您需要访问 ->relation()
而不是 ->relation
(这是动态 属性 调用):
$client_agreement = $client->agreements()
->wherePivot('code', '=', $code)
->first();