Ale*_*rin 5 postgresql common-table-expression query-builder laravel eloquent
我有 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
Laravel 没有对公共表表达式的原生支持。
我已经为其创建了一个包:https ://github.com/staudenmeir/laravel-cte
你可以这样使用它:
$query = DB::table('table1')->select('id');
$result = DB::table('table2')
->withExpression('main', $query)
->whereIn('table2.id', DB::table('main')->select('id'))
->get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6165 次 |
| 最近记录: |