如何使用Eloquent在Laravel中编写以下SQL查询?

时间:2017-07-31 06:10:53

标签: sql laravel eloquent subquery

我想在Laravel中编写一个查询来检索特定用户查看过的所有帖子。 user_idpost_id保存在名为WatchHistory的表格中。

SELECT *
FROM Post
WHERE post_id = (
     SELECT post_id
     FROM WatchHistory
     WHERE user_id = $user_id
);

我尝试了以下内容:

$posts = Post::whereIn('post_id', function($query){
        $query->select('post_id')
            ->from(with(new WatchHistory)->getTable())
            ->where('user_id',$user_id);
        })->get();

但是它给了我一个错误,即没有定义变量user_id。

2 个答案:

答案 0 :(得分:3)

你应该试试这个:

POST::whereIn('post_id', function($query) use($user_id){
            $query->select('post_id')
                ->from(with(new WATHCHISTORY)->getTable())
                ->where('user_id',$user_id);
            })->get();

希望这对你有用!!!!

答案 1 :(得分:2)

试试这个,

如果您的用户ID在变量$user_id中,则可以这样做,

DB::table('post')->whereIn('post_id',
    DB::table('watchhistory')->where('user_id',$user_id)->pluck('post_id')
)->get();