在JOIN表中的Eloquent where子句 - Laravel 5.5

时间:2017-11-13 18:40:16

标签: php laravel eloquent

我有两个相互连接的模型。

class Company extends Model {
   public function addresses() {
      return $this->belongsToMany('\App\Address', 'address_mapping', 'uid_company', 'uid_address');
   }
}

class Address extends Model {
}

在我的JOIN表中,我有一个名为active的列。如何从公司获取所有活动地址?或者我如何在JOIN表中实现where子句?

谢谢!

1 个答案:

答案 0 :(得分:1)

您调用" JOIN表"的表,通常称为数据透视表。 您可以使用wherePivot方法获取所有活动记录:

 $company = Company::first();   
 $activeAdresses = $company->addresses()->wherePivot('active', 1);

或者您可以直接在模型中定义关系:

class Company extends Model {
   public function activeAddresses() {
      return $this->belongsToMany('\App\Address', 'address_mapping', 'uid_company', 'uid_address')
                  ->wherePivot('active', 1);
   }
}

请参阅Eloquent documentation

中的通过中间表列过滤关系部分