Laravel join 和 left join 在一个查询中

用户9452884

我有一个 sql 查询,我想将其转换为查询构建器或 Laravel ORM。它工作正常。但我希望它进入查询构建器表单或 ORM。是否可以在查询构建器或 ORM 中编写?。

我有四个表答案、问题、用户和 upvote_answers。查询具有三个“连接”和一个“左连接”,只是为了检查当前登录的用户是否赞成(布尔值)一个答案以及其他属性

   SELECT answers.answer_content as answer_content,
          answers.id as answer_id,
          answers.created_at as created_at,
          answers.created_at as answer_upvote,
          answers.created_at as answer_downvote,
          questions.id as question_id, 
          questions.question_title as question_title, 
          questions.question_slug as question_slug, 
          users.id as user_id, 
          users.name as user_name, 
          users.user_slug as user_slug,
          upvote_answers.upvote as upvote
                                        FROM 
                                            answers
                                            JOIN questions on questions.id = answers.question_id
                                            JOIN users on users.id = answers.user_id
                                            LEFT JOIN upvote_answers ON
                                                upvote_answers.answer_id = answers.id AND
                                                upvote_answers.user_id = '2'
                                        WHERE 
                                            questions.question_active = 1 and 
                                            answers.answer_active = 1
M哈立德朱奈德

使用查询构建器,您可以将查询编写为

DB::table('answers as a')
    ->join('questions as q', 'q.id', '=', 'a.question_id')
    ->join('users as u', 'u.id', '=', 'a.user_id')
    ->leftJoin('upvote_answers as ua', function ($join) {
        $join->on('ua.answer_id', '=', 'a.id')
             ->where('ua.user_id', '=', 2);
    })
    ->where('q.question_active', '=', 1)
    ->where('a.answer_active', '=', 1)
    ->select(DB::raw('a.answer_content as answer_content,a.id as answer_id,a.created_at as created_at,a.created_at as answer_upvote,a.created_at as answer_downvote,q.id as question_id, q.question_title as question_title, q.question_slug as question_slug, u.id as user_id, u.name as user_name, u.user_slug as user_slug,ua.upvote as upvote'))
    ->get();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Laravel查询构建器和LEFT JOIN删除行

来自分类Dev

使用Laravel查询构建器和LEFT JOIN删除行

来自分类Dev

同一查询中join和left-join的两个语法问题

来自分类Dev

查询中的 SUM、GROUP BY 和 LEFT JOIN

来自分类Dev

使用INNER JOIN和LEFT JOIN的MySQL查询

来自分类Dev

BigQuery 中的 Group by 和 left join

来自分类Dev

SQL JOIN和LEFT OUTER JOIN

来自分类Dev

查询搜索 LIKE 使用关键字 where 和 left join LARAVEL 5

来自分类Dev

PHP在一个查询中显示来自四个表的数据(即:LEFT JOIN)

来自分类Dev

Postgres中的LEFT JOIN查询

来自分类Dev

LINQ查询和LEFT JOIN条件上的子查询

来自分类Dev

LEFT JOIN查询未返回第一个表中的所有行

来自分类Dev

使用COUNT和LEFT JOIN进行缓慢的MYSQL查询

来自分类Dev

使用COALESCE和LEFT OUTER JOIN的SQL查询

来自分类Dev

使用LEFT JOIN(SELECT)ORDER和LIMIT的MySQL查询

来自分类Dev

慢的mysql查询,包括Left Join和Selects

来自分类Dev

LEFT JOIN项目的订单和组查询结果

来自分类Dev

使用LEFT JOIN和History表的MySQL查询的正确结果

来自分类Dev

使用COALESCE和LEFT OUTER JOIN的SQL查询

来自分类Dev

(My)使用MAX和LEFT JOIN的SQL查询

来自分类Dev

慢的mysql查询,包括Left Join和Selects

来自分类Dev

在 sql LEFT JOIN 中只显示一个结果

来自分类Dev

SQL 中的 INNER JOIN 与 LEFT JOIN 性能

来自分类Dev

Laravel Left join在右侧表中添加where子句

来自分类Dev

Laravel Left join在右侧表中添加where子句

来自分类Dev

我可以使用LEFT OUTER JOIN和NULL,而不是一个表?

来自分类Dev

SQL GROUP CONCAT 和 LEFT JOIN 只从数据库返回一个结果

来自分类Dev

一列上的 MySQL DISTINCT 和 LEFT JOIN

来自分类Dev

MYSQL LEFT JOIN和COUNT和GROUP BY

Related 相关文章

热门标签

归档