如何在Laravel查询生成器中使用'AND'使'INNER JOIN ON'生效?

时间:2019-01-03 22:31:42

标签: php laravel

我正在学习Laravel并编写类似于论坛的小型应用程序。 我已经用纯PHP编写了它,但是现在试图用laravel编写它,并陷入了查询生成器的困扰,或者是我缺乏知识。 要获取某个主题的所有论坛答案,我正在使用以下查询

我尝试过这样:

$thread = DB::table('messages')
    ->join('thread_message', function($join) use ($threadid){
    $join->on('thread_message.message_id', '=', 'messages.message_id');
    $join->on('thread_message.thread_id', $threadid);
})
    ->join('users', 'users.id', '=', 'messages.author_id')
    ->select('messages.message_text', 'messages.img_path', 'users.name', 'messages.date')
    ->orderBy('messages.message_id','desc')
    ->get();

我的查询如下。它可以在旧项目中使用。

"SELECT m.message_text, m.imgpath, u.username, m.date FROM messages as m
                            INNER JOIN thread_message as t_m
                            ON t_m.message_id = m.message_id AND  t_m.thread_id = ?
                            INNER JOIN users as u
                            ON u.user_id = m.author_id ORDER BY m.message_id DESC LIMIT $pagStart,$pagEnd"

“?”查询中的内容将替换为当前主题的ID,并且其中有$ pagStart,$ pagEnd分页。

但是上面的代码会导致错误

"SQLSTATE[42S22]: Column not found: 1054 Unknown column '1' in 'on clause' (SQL: select `messages`.`message_text`, `messages`.`img_path`, `users`.`name`, `messages`.`date` from `messages` inner join `thread_message` on `thread_message`.`message_id` = `messages`.`message_id` and `thread_message`.`thread_id` = `1` inner join `users` on `users`.`id` = `messages`.`author_id` order by `messages`.`message_id` desc)

0 个答案:

没有答案