mysql - Laravel 查询生成器嵌套连接和别名

标签 mysql laravel query-builder

如何使用 Laravel 的查询生成器创建此查询:

SELECT `content`.`tagable_id`,`taged`.`tag_id`
FROM `taged`
RIGHT JOIN
    (SELECT `taged`.`tagable_id`,`taged`.`tag_id`
    FROM `taged`
    WHERE `taged`.`mask_flag`='0'
        AND `taged`.`tagable_type`='App\\\Post'
        AND `taged`.`user_id`='1') AS `content`
ON `taged`.`mask_flag`='1'
    AND `content`.`tagable_id`=`taged`.`tagable_id`
    AND `taged`.`tagable_type`='App\\\Post'
    AND `taged`.`user_id`='1'

内部 SELECT taged.tagable_id... 周围的括号是我的主要问题所在。

最佳答案

这是您的 Laravel 查询:

$result = DB::table('taged')
             ->select('content.tagable_id', 'taged.tag_id')
             ->rightJoin(DB::raw('SELECT tagable_id, tag_id FROM taged AS content'), function($join)
         {
             $join->on('taged.mask_flag', '=', 1);
             $join->on('content.tagable_id', '=', 'taged.tagable_id');
             $join->on('taged.tagable_type', '=', 'App\\\Post');
             $join->on('taged.user_id', '=', 1);
         })
         ->where('content.mask_flag', '=', 0);
         ->where('content.tagable_type', '=', 'App\\\Post');
         ->where('content.user_id', '=', 1);
         ->get();

关于mysql - Laravel 查询生成器嵌套连接和别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32175788/

相关文章:

安卓 Debug模式 :Is it possible to view raw query or in-built query build by queryBuilder for countOf?

mysql - mysqld_safe在my.cnf中有什么作用?

symfony - 在多对多关系中使用 Doctrine QueryBuilder 进行 NOT IN 查询

mysql - 我在哪里关闭 Node mysql 中的连接?

php - 如何在 vue 组件中使用 Laravel Assets

php - Eloquent/Laravel 与多个数据透视表的关系

php - 如何使用中间件将授权 access_token 发送到 Laravel 中的请求 header

typescript - QueryBuilder 的 TypeORM WHERE 子句中的参数有什么问题?

mysql - 如何对按日期排序的不断更新的提要进行分页

php - 从空格分隔的句子创建 LIKE 友好字符串