我正在尝试检查另一个表以从结果中删除匹配项,但无法弄清楚。
$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
时剥离结果,但是以下内容返回一个空数组。
答案 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语句中的第四个参数,这将仅包括将在其中找到块的结果。 希望这会有所帮助