首页 > 解决方案 > Laravel 有 2 张桌子

问题描述

我正在尝试检查另一个表以从结果中删除匹配项,但无法弄清楚这一点。

$value = people::select(array('people.blog_id'))    
         ->join('blocks', 'people.user_id', '=', 'blocks.blocker')
         ->where('people.user_id', $user->id)
         ->where('blocks.blocker',  '!=', 'people.user_id')
         ->get()
         ->toArray();

我想要实现的是,当user_id从在 blocks 表中也发现了 blocker 的人那里获取结果时,删除结果,但以下返回一个空数组。

标签: phplaravel

解决方案


根据 laravel 文档

您可以使用 DB 外观上的 table 方法来开始查询。table 方法为给定的表返回一个流畅的查询构建器实例,允许您将更多约束链接到查询上,然后最终使用 get 方法获取结果。

像下面这样更改您的查询语句-

$articles = DB::table('people')
            ->join('blocks', 'people.user_id', '=', 'blocks.blocker')
            ->where('blocks.blocker', '<>', 'people.user_id')
            ->select('people.blog_id')
            ->get();

推荐阅读