我需要获取那些没有加入的记录有很多表 我这样的查询
$result = Recipes::select('id')->where("name", 'like', '%' . $item . '%')
->with(['categoryItem'])
->get();
我的输出是
Array
(
[0] => Array
(
[id] => 1
[category_item] => Array
(
[0] => Array
(
[id] => 2
[foodable_id] => 1
[foodable_type] => Recipes
[created_at] => 2017-04-14 16:18:22
)
)
)
[1] => Array
(
[id] => 4
[category_item] => Array
(
)
)
)
我想获得那些空的category_item详细信息的记录。在下面的示例中,我想获得索引1记录,以便如何为查询提供条件
答案 0 :(得分:4)
如果我理解正确并且您想要获得没有categoryItem
的收件人,则需要使用doesntHave()
方法:
Recipes::where('name', 'like', '%'.$item.'%')
->doesntHave('categoryItem')
->get();
我认为categoryItem
是已定义的关系,因为您尝试在with()
方法中使用它。
答案 1 :(得分:0)
你好也许这可以提供帮助。 别忘了在文件顶部添加:
use DB;
你的结果将是这样的
$result = Recipes::select('id')->where("name", 'like', '%' . $item . '%')
->whereHas('categoryItem', function($q) {
$q->where(DB::raw('count(*)),'>', 0);
})->get();
我没有测试计数函数希望这个有效,祝你好运