[英]MySQL query to Laravel Eloquent
我有以下MySQL查询:
SELECT
*
FROM
news_posts
WHERE
user_id = ?
AND id NOT IN (SELECT
post_id
FROM
user_read
WHERE
user_id = ?)
我想使其更加“雄辩”。 我已经尝试了以下方法,但是(显然)无法正常工作:
NewsPost::where('user_id', Auth::id())
->whereNotIn(function ($query) {
$query->DB::table('user_read')
->select('post_id')
->where('user_id', Auth::id());
})->get();
我假设“ where”方法正在对“ new_posts”表执行简单的SQL查询。 您可以尝试重写此查询,并让mysql对新帖子进行过滤吗? (在mysql上搜索LEFT OUTER JOIN)
SELECT *
FROM news_posts a
JOIN user_read b
ON a.id = b.post_id
WHERE a.user_id = ?
AND b.post_id IS NULL;
感谢所有的答复! 通过以下调整可以正常工作:
NewsPost::where('user_id', Auth::id())
->whereNotIn('id', function ($query) {
$query->select('post_id')
->from('user_read')
->where('user_id', Auth::id());
})
->get();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.