Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Laravel查询生成器中使用WITH子句_Laravel_Postgresql_Eloquent_Common Table Expression_Query Builder - Fatal编程技术网

如何在Laravel查询生成器中使用WITH子句

如何在Laravel查询生成器中使用WITH子句,laravel,postgresql,eloquent,common-table-expression,query-builder,Laravel,Postgresql,Eloquent,Common Table Expression,Query Builder,我有SQL查询,请参见示例。 但是我找不到一种方法可以在查询生成器中编写它。 你知道怎么可能吗 以main作为 从表1中选择id 从表2中选择* 哪里 表2.1从主菜单中选择*中的id 我希望得到如下格式: $latestPosts=DB::表'posts' ->选择'user_id',DB::raw'MAXcreated_at as last_post_created_at' ->“出版在哪里”,对吗 ->groupBy'user_id'; $users=DB::表“用户” ->joinSub

我有SQL查询,请参见示例。 但是我找不到一种方法可以在查询生成器中编写它。 你知道怎么可能吗

以main作为 从表1中选择id 从表2中选择* 哪里 表2.1从主菜单中选择*中的id 我希望得到如下格式:

$latestPosts=DB::表'posts' ->选择'user_id',DB::raw'MAXcreated_at as last_post_created_at' ->“出版在哪里”,对吗 ->groupBy'user_id'; $users=DB::表“用户” ->joinSub$latestPosts,“最新发布”,函数$join{ $join->on'users.id'、'='、'latest_posts.user_id'; }->得到;
但是对于WITH

而言,查询生成器必须与多个数据库引擎mysql、postgresql、sql lite、sql server兼容,因此只提供对通用功能的支持

假设查询返回数据,则可以使用DB:select方法执行查询

$data=DB::select'WITH main AS select id FROM table1,select*FROM table2,其中select*FROM main'中的table2.id

DB:select方法还接受使用命名绑定的第二个参数


或者,也有一些软件包,例如将功能添加到Eloquent/Query Builder的软件包。

Laravel不支持通用表表达式

我已经为它创建了一个包:

您可以这样使用它:

$query=DB::table'table1'->选择'id'; $result=DB::表'table2' ->使用表达式'main',$query ->其中'table2.id',DB::table'main'->选择'id' ->得到;
您的查询在MySQL中工作吗?你展示的不是一对多的关系吗?你可以用这个例子,我不知道MySQL和WITH子句。我在PostgerSQL中使用它。当然,我真正的任务并不像例子那样简单。真正的任务更复杂,但我简化了它的问题是的,漂亮。非常感谢你!