如何做Laravel ORM子查询

时间:2015-03-29 12:55:06

标签: laravel orm

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

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

2 个答案:

答案 0 :(得分:2)

你可以这样做:

$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移动到变量,以防你想从输入中使用它,例如)

答案 1 :(得分:1)

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

然后,您的查询将如下所示:

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

Laravel在这里所做的是找到用户ID为kombuwa的页面,然后找到该页面的所有注释。

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

希望它会有所帮助,尽管迟到了实际问题。谢谢:)