繁体   English   中英

MySQL查询到Laravel Eloquent

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM