2017-11-13 14 views
0

私はお互いに接続された2つのモデルを持っています。JOINテーブルのEloquent where節 - Laravel 5.5

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

class Address extends Model { 
} 

私のJOINテーブルには、アクティブという名前の列があります。会社からすべてのアクティブなアドレスを取得するにはどうすればよいですか?または、JOINテーブルにwhere節を実装するにはどうすればよいですか?

ありがとうございました!

+0

これはあなたの質問に答える必要があります:https://laravel.com/docs/5.5/eloquent-relationships –

+0

はい、そうです。私はピボットテーブルという用語を知らなかった。 :-) – sam918

答えて

1

通常、ピボットテーブルと呼ばれる「JOINテーブル」と呼ばれるテーブル。

$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

あなたは wherePivotメソッドを使用して、すべてのアクティブなレコードを取得することができます
+1

[中間のテーブル列を介したフィルタリング関係](https://laravel.com/docs/5.5/eloquent-relationships#many-to-many)のようなモデルで直接定義するか、 –

関連する問題