2016-09-02 12 views
0

は、私は3つのテーブルmysqlは3つのテーブルを結合する、同じテーブルが二回

1)ユーザーが持っているIDを参照するUSER_ID - 2つの外部キー を持っています は状態

3の参照番号が)私は両方STATE_IDとproperty_state_idため、ユーザ情報、ユーザの詳細情報も状態からの情報を持っているように、これらの3つのテーブルを結合する方法

を述べていること?-property_state_idユーザーに私は二度状態テーブルに参加できないように私はlaravel

User::where('users.id', $id) 
      ->leftJoin('states', 'users.state_id', '=', 'states.id') 
      ->leftJoin('user_details', 'user_details.user_id', '=', 'users.id') 
      ->first(); 

で、このように書かれている

は思えます。これにはどんな解決策がありますか?

+0

はい、あなたは、あなたが使用する必要がありますすることができますテーブルエイリアス。 – Shadow

答えて

2

あなたが参加する中で同じテーブルを複数回参加することができますが、(下記のサンプルコードでs1とs2)表の別名を提供する必要があります。

User::where('users.id', $id) 
     ->leftJoin('states as s1', 'users.state_id', '=', 's1.id') 
     ->leftJoin('user_details', 'user_details.user_id', '=', 'users.id') 
     ->leftJoin('states as s2', 'user_details.property_state_id', '=', 's2.id') 
     ->first(); 
関連する問題