小编Ale*_*rin的帖子

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

我有 SQL 查询(参见示例)。但我找不到如何在查询生成器中编写它的方法。你有什么想法吗?这怎么可能?

WITH main AS (
    SELECT id FROM table1
)
SELECT * FROM table2
WHERE 
  table2.id IN (SELECT * FROM main)
Run Code Online (Sandbox Code Playgroud)

我想获得如下格式:

$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();
Run Code Online (Sandbox Code Playgroud)

但对于WITH

postgresql common-table-expression query-builder laravel eloquent

5
推荐指数
1
解决办法
6165
查看次数