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

标签 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 没有定义。

最佳答案

你应该试试这个:

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

希望这对你有用!!!!

关于sql - 如何使用 Eloquent 在 Laravel 中编写以下 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45408566/

相关文章:

sql - 有哪些好工具可用于从 SQL Server 数据库生成 ERD?

php - Laravel:在使用 Query Builder 或 Eloquent ORM 时对每次插入/更新执行一些任务

laravel - 如何将数据添加到Laravel数据透视表中的其他列

laravel - 将 Laravel-4 Eloquent 查询结果转换为数组

mysql - 按字段最大值过滤重复项

mysql - 使用 mysql 或 sqlite3 解释 Rails 4 sql 查询

mysql - 分组用户,MySQL 上匹配的连续值

mysql - 如何简化这个子查询?

php - 通过限定名称与::class 引用 Laravel 模型

php - Laravel 6 : A facade root has not been set