【发布时间】:2019-10-02 05:13:18
【问题描述】:
我有 SQL 查询(见示例)。 但是我找不到如何在查询生成器中编写它的方法。 你有什么想法吗?
WITH main AS (
SELECT id FROM table1
)
SELECT * FROM table2
WHERE
table2.id IN (SELECT * FROM main)
我想得到如下格式:
$latestPosts = DB::table('posts')
->select('user_id', DB::raw('MAX(created_at) as last_post_created_at'))
->where('is_published', true)
->groupBy('user_id');
$users = DB::table('users')
->joinSub($latestPosts, 'latest_posts', function ($join) {
$join->on('users.id', '=', 'latest_posts.user_id');
})->get();
但对于 WITH
【问题讨论】:
-
您的查询在 MySQL 中有效吗?你展示的不是一对多的关系吗?您可以使用docs 作为很好的示例。
-
我不知道 MySQL 和 WITH 子句。我在 PostgerSQL 中使用它。当然,我真正的任务并不像例子那么简单。实际任务更复杂,但我为问题简化了它
标签: laravel postgresql eloquent common-table-expression query-builder