2016-07-08 5 views
0

私は以下の3つのテーブルに参加しようとしています。この問題は、正しくない「AND」演算子を使用して、shares.post_idにposts.idを結合したい部分にあります。これを行う正しい構文は何ですか?laravelでテーブルに2回参加する構文

$sharedPosts = DB::table('shares') 
      ->join('users', 'users.id', '=', 'shares.user_id') 
      ->join('posts', 'posts.user_id', '=', 'users.id' , 'AND' , 'posts.id', '=', 'shares.post_id') 
      ->where('shares.user_id', '=', $myFriends) 

     ->get(); 

答えて

1

エイリアシングを試してみてください。

$sharedPosts = DB::table('shares') 
      ->join('users', 'users.id', '=', 'shares.user_id') 
      ->join('posts as p1', 'p1.user_id', '=', 'users.id' , 'AND' , 'p1.id', '=', 'shares.post_id') 
      ->join('posts as p2', 'p2.id', '=', 'shares.post_id') 
      ->where('shares.user_id', '=', $myFriends) 
     ->get(); 

あなたはなし別名で二回表を結合することはできません。

あなたの参加で2句を持っている場合、私はあなたがdocumentationのように行うべきだと思いますが:

$sharedPosts = DB::table('shares') 
    ->join('users', 'users.id', '=', 'shares.user_id') 
    ->join('posts as p1', , function($join){ 
     $join->on('p1.user_id', '=', 'users.id') 
      ->on('p1.id', '=', 'shares.post_id') 
    }) 
    ->join('posts as p2', 'p2.id', '=', 'shares.post_id') 
    ->where('shares.user_id', '=', $myFriends) 
->get(); 

編集(1つのポストと結合):

$sharedPosts = DB::table('shares') 
    ->join('users', 'users.id', '=', 'shares.user_id') 
    ->join('posts', , function($join){ 
     $join->on('posts.user_id', '=', 'users.id') 
      ->on('posts.id', '=', 'shares.post_id') 
    }) 
    ->where('shares.user_id', '=', $myFriends) 
->get(); 
+0

私は」申し訳ありませんが、私が編集した - > join( 'posts'、 'posts.id'、 '='、 'shares.post_id')は、次のようなものではありません。あなたは今チェックできますか? –

+0

3行目に余分なカンマがあります、ありがとうございました –

+0

はい、削除しました:) –

関連する問題