查询与 Laravel5 中条件的关系?
Querying relation with condition in Laravel5?
我有两张表,一张是客户端,第二张是 client_contacts。我想列出具有一个主要联系人的所有联系人,可以通过检查 client_contacts 中的 is_primary 字段来识别 page.I 也希望以对象形式响应。
我的控制器,
Client::with(array('contacts'))
->findOrFail($id);
我的客户模型
public function contacts() {
return $this->hasMany('App\Model\ClientContact');
}
在我的客户联系人模型中
public function clients() {
return $this->belongsTo('App\Model\Client');
}
它 return 是每个客户的所有联系人,我如何在这里放置条件并将 return 结果作为对象?
您可以在 Client
模型中声明两个额外的关系方法,例如:
use ...Model;
class Client extends Model {
// Will return a collection of ClientContact object or null (many-to-many)
public function nonPrimaryContacts()
{
// Assumed is_primary is a boolean field, use whereNull('is_primary') if null
return $this->hasMany('App\Model\ClientContact')->where('is_primary', false);
}
// Will return a single ClientContact object or null (one-to-many)
public function primaryContact()
{
return $this->hasOne('App\Model\ClientContact')->where('is_primary', true);
}
}
那么你可以这样使用:
Client::with(['primaryContact', 'nonPrimaryContacts'])->findOrFail($id);
对于所有联系人,您可以使用 Client
模型中的 contacts
方法。
我有两张表,一张是客户端,第二张是 client_contacts。我想列出具有一个主要联系人的所有联系人,可以通过检查 client_contacts 中的 is_primary 字段来识别 page.I 也希望以对象形式响应。 我的控制器,
Client::with(array('contacts'))
->findOrFail($id);
我的客户模型
public function contacts() {
return $this->hasMany('App\Model\ClientContact');
}
在我的客户联系人模型中
public function clients() {
return $this->belongsTo('App\Model\Client');
}
它 return 是每个客户的所有联系人,我如何在这里放置条件并将 return 结果作为对象?
您可以在 Client
模型中声明两个额外的关系方法,例如:
use ...Model;
class Client extends Model {
// Will return a collection of ClientContact object or null (many-to-many)
public function nonPrimaryContacts()
{
// Assumed is_primary is a boolean field, use whereNull('is_primary') if null
return $this->hasMany('App\Model\ClientContact')->where('is_primary', false);
}
// Will return a single ClientContact object or null (one-to-many)
public function primaryContact()
{
return $this->hasOne('App\Model\ClientContact')->where('is_primary', true);
}
}
那么你可以这样使用:
Client::with(['primaryContact', 'nonPrimaryContacts'])->findOrFail($id);
对于所有联系人,您可以使用 Client
模型中的 contacts
方法。