###前提・実現したいこと
laravel5.4で、サブクエリした結果のテーブルをleft joinしたいのですが、どうしても上手くいかないです。
laravelでの正しい記述を教えて頂けないでしょうか?
恥ずかしながらPHP初心者で、ここからどうやって修正したらいいのかが調べてもサッパリ分からず手詰まっております。
###発生している問題・エラーメッセージ
2つエラーが出ていて
QueryException
PDOException
メッセージはともに
SQLSTATE[42000]: Syntax error or access violation: 〜
###該当のソースコード
こちらのSQLで取得できる結果を、
SQL
1SELECT subjects.id, subjects.book_id, books.item_name, is_read_cnt.cnt FROM 2 3subjects 4LEFT JOIN ( 5select n.id as negotiate_id, count(m.id) as cnt from 6 subjects n 7 LEFT JOIN messages m 8 ON n.id = m.negotiate_id 9WHERE 10 n.buyer_user_id = ? 11AND 12 m.is_read=0 13GROUP BY 14 negotiate_id 15 16) is_read_cnt 17 18ON subjects.id = is_read_cnt.negotiate_id 19 20LEFT JOIN books 21on books.id = subjects.book_id 22 23WHERE subjects.buyer_user_id = ?
こちらのlaravelで取得ができれば問題が解決します。
PHP
1DB::table('negotiates') 2 ->select(['negotiates.id','negotiates.book_id','books.item_name','is_read_cnt.cnt']) 3 ->leftJoin("( 4select n.id as negotiate_id, count(m.id) as cnt from 5 negotiates n 6 LEFT JOIN messages m 7 ON n.id = m.negotiate_id 8WHERE 9 n.buyer_user_id = {$userid} 10AND 11 m.is_read=0 12GROUP BY 13 negotiate_id 14 15) is_read_cnt","subjects.id","=","is_read_cnt.negotiate_id") 16 ->leftJoin('books','books.id', '=', 'subjects.book_id') 17 ->where('subjects.buyer_user_id',$userid) 18 ->get() 19 ->toArray();
素人質問で申し訳ありませんが、ご教示頂けますと幸いです。
よろしくお願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/03 03:35