首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将SQL原始查询重写为

如何将SQL原始查询重写为
EN

Stack Overflow用户
提问于 2020-06-21 11:23:56
回答 1查看 103关注 0票数 1

我有postgresql查询,它工作得很好

代码语言:javascript
复制
select "exhibitions_artworks".*, "curator_rating"."curator_id", "curator_rating"."selected",
       "curator_rating"."rating", "curator_rating"."submitted" from "exhibitions_artworks"
full outer join "curator_rating" on "curator_rating"."artwork_id" = "exhibitions_artworks"."id"
where "exhibitions_artworks"."exhibition_id" = 15
  and "exhibitions_artworks"."exhibition_id" is not null
  and "active" = true
  and "exhibitions_artworks"."status" = 0
  and "curator_rating"."curator_id" = 71 or "curator_rating"."curator_id" is null

我使用laravel,我想把它重写到中。但Laravel不支持full outer join。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-21 17:04:40

在Laravel上,如果您想要编写SQL,可以使用DB:raw

示例:

代码语言:javascript
复制
$results = DB::select( DB::raw("SELECT * FROM table WHERE column = '$variable'") );

DB::raw()用于生成查询生成器不再进一步解析的任意SQL命令。

(更新)

使用以下SQL作为示例:

代码语言:javascript
复制
SELECT * FROM t1 FULL OUTER JOIN t2 ON t1.id = t2.id;

我们也可以使用联盟来处理相同的结果:

代码语言:javascript
复制
SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id

在Laravel框架中,您可以使用unionAll方法:

代码语言:javascript
复制
$first = DB::table('users')
            ->whereNull('first_name');

$users = DB::table('users')
            ->whereNull('last_name')
            ->union($first)
            ->get();

参考资料:https://laravel.com/docs/7.x/queries#unions

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62497820

复制
相关文章

相似问题

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