首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >此MySQL查询与Laravel查询构建器的等价物是什么?

此MySQL查询与Laravel查询构建器的等价物是什么?
EN

Stack Overflow用户
提问于 2018-06-03 20:35:24
回答 1查看 75关注 0票数 0

这是我来自MySQL的查询。我想对两个相同的表使用'LEFT JOIN‘,这两个表具有不同的别名,并且在括号中有'ON’和' and‘。这个查询的结果是正确的,但是我的问题是我怎么知道这个查询和它的Laravel查询的等价物呢?

代码语言:javascript
复制
SELECT * FROM table1 AS a 
LEFT JOIN table1 AS b 
ON (a.column1 = b.column1 AND a.column2 < b.column2)
WHERE b.column2 is null;

然后我在Laravel query Builder中使用这个查询,它将查询错误的结果。

代码语言:javascript
复制
DB::table('table1 As a')
->leftJoin('table1 As b', 'a.column1', '=', 'b.column1')
->leftJoin('table2 As c','a.column2', '<', 'c.column2')
->whereNull('c.column2')
->get();

这个Laravel查询等同于这个MySQL查询,不幸的是,它将查询相同的错误结果:

代码语言:javascript
复制
SELECT * FROM table1 AS a 
LEFT JOIN table1 AS b 
ON (a.column1 = b.column1 AND )
LEFT JOIN table1 AS c
ON (a.column2 < c.column2)
WHERE b.column2 is null;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-03 20:43:36

您需要将一个函数传递给leftJoin(),如下所示...

代码语言:javascript
复制
DB::table('table1 as a')
    ->leftJoin('table1 as b', function($join) {
        return $join->on('a.column1', '=', 'b.column1')
            ->whereColumn('a.column2', '<', 'b.column2');
    })->get();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50666483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档