Laravel哪里有2张桌子

时间:2018-12-25 01:54:29

标签: php laravel

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

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

我要实现的目标是,从在blocks表中也发现有blocker的人那里获得user_id时剥离结果,但是以下内容返回一个空数组。

2 个答案:

答案 0 :(得分:1)

根据laravel文档

  

您可以在DB Facade上使用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();

答案 1 :(得分:0)

我认为您应该在此处使用右连接,而不是简单的连接, 您可以这样做。

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

请注意join语句中的第四个参数,这将仅包括将在其中找到块的结果。 希望这会有所帮助