【问题标题】:Querying relation with condition in Laravel5?在 Laravel5 中查询与条件的关系?
【发布时间】:2015-05-09 03:21:14
【问题描述】:

我有两张表,一张是客户,另一张是 client_contacts。我想列出一个主要联系人的所有联系人,可以通过检查 client_contacts 页面中的 is_primary 字段来识别。我还想要对象形式的响应。 我的控制器,

Client::with(array('contacts'))
                        ->findOrFail($id);

我的客户模型

public function contacts() {
    return $this->hasMany('App\Model\ClientContact');
}

在我的客户联系人模型中

 public function clients() {
    return $this->belongsTo('App\Model\Client');
}

它返回每个客户的所有联系人,我如何在这里放置条件并将结果作为对象返回?

【问题讨论】:

    标签: php mysql laravel orm laravel-5


    【解决方案1】:

    您可以在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 方法。

    【讨论】:

      猜你喜欢
      • 2021-08-30
      • 2017-08-07
      • 2023-03-04
      • 2020-11-08
      • 1970-01-01
      • 2021-10-25
      • 2013-11-18
      • 2017-01-30
      • 1970-01-01
      相关资源
      最近更新 更多