2017-06-15 117 views
-1

我已經follwoing查詢laravel LEFT JOIN查詢不工作

$data=Post::join('category', 'questions.categoryid', '=', 'category.CategoryId') 
     ->where('category.CategoryName','demo') 
     ->join('comments', function ($join) { 
       $join->on('posts.postId', '=', 'comments.postId') 
       ->where('posts.postId', '!=', 'comments.linkId'); 
     }) ->get(); 

我上面的查詢我在哪裏retireveing基於類別名稱所有發佈和與評論

每一個想工作正常,但下加入表線無法正常工作。我的意思是,即使添加此行仍是其retriving所有記錄,甚至我試圖!=<>但不工作

->where('posts.postId', '!=', 'comments.linkId'); 
+1

希望你知道這是不是一個左連接。 Laravel的連接是一個內部連接。 – Devon

回答

2

不要使用WHERE內的條款JOIN,可以延長ON子句:

->join('comments', function ($join) { 
     $join->on('posts.postId', '=', 'comments.postId') 
      ->on('posts.postId', '!=', 'comments.linkId'); 
}) 

這將等同於:

JOIN comments ON posts.postId = comments.postId AND posts.postId != comments.linkId 
+0

@ devon.Thanks我試過這一個。如果我添加像這樣然後即時只獲得一個記錄,其中有評論.linkId – vision

+0

@ devon.even我改變了左邊加入,然後它會回顧所有 – vision

+0

我不確定是什麼你在這之後,但它不再是聽起來像Laravel問題,也許你只是不理解左連接和內連接做什麼?也許你想看看雄辯的關係呢? – Devon