如何做 Laravel ORM 子查询

How to do Laravel ORM subquery

如何在 laravel ORM 中执行下面的 sql

select * from comments where page_id in (
    select id from pages where pages.user_id = "kombuwa"
)

你可以这样做:

$userId = 'kombuwa';
$comments = DB::table('comments')->whereIn('page_id', function($q) use ($userId) {
   $q->select('id')->from('pages')->where('pages.user_id', $userId);
})->get();

(我将 $userId 移动到变量,以防万一您想从输入中使用它)

认为上面的答案是正确的,我认为如果你使用关系模型概念会有所帮助。然后,您可以简单地使用 Laravel Eloquent ORM。例如,在你的情况下,我认为它就像一页有很多评论。因此,您可以只添加关系(在 Laravel 的情况下,只需在所需模型中添加函数),这会使您的查询更容易。

那么,您的查询将如下所示:

Pages::where('user_id','kombuwa')->comments

这里Laravel的作用是找到用户id为kombuwa的页面,然后找到该页面的所有评论。

有关 Laravel 关系 check 的更多详细信息 link,您将获得更多详细信息。

希望对您有所帮助,尽管对实际问题来说已经晚了。谢谢 :)