Php MySQL查询到Laravel雄辩
我有以下MySQL查询:Php MySQL查询到Laravel雄辩,php,mysql,laravel,Php,Mysql,Laravel,我有以下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'
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上搜索左外部联接)
谢谢你的回复!通过以下调整使其正常工作:
NewsPost::where('user_id', Auth::id())
->whereNotIn('id', function ($query) {
$query->select('post_id')
->from('user_read')
->where('user_id', Auth::id());
})
->get();
嗯,我不认为加入他们是我想做的。我想删除用户从新闻中阅读的所有帖子。因此,只留下未读的帖子…如果这有意义的话…请参阅“Left Oute Join”。使用
WhereNotIn
方法,您没有提供列名。应该是什么?另外,我假设您在以下方面遇到错误:$query->DB::table
@rosswillson Yes。谢谢开始工作了
NewsPost::where('user_id', Auth::id())
->whereNotIn('id', function ($query) {
$query->select('post_id')
->from('user_read')
->where('user_id', Auth::id());
})
->get();