Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL查询到Laravel雄辩_Php_Mysql_Laravel - Fatal编程技术网

Php MySQL查询到Laravel雄辩

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'

我有以下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上搜索左外部联接)


谢谢你的回复!通过以下调整使其正常工作:

 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();