我希望withCount包括不存在的关系的数量。
例如,假设我有一个名为people
的表和一个名为pets
的表。
people
有很多pets
,但是pets
可以为空people_id
。我想对每个pets
的{{1}}进行计数,但是我也想包含没有people
的{{1}}。
我知道我可以简单地做pets
,但这不包括people_id
为空的People::withCount('pets')->get()
的计数。
我要寻找的结果是这样的:
pets
我希望这是有道理的。
答案 0 :(得分:1)
在这种情况下,您可以使用ROLLUP
。试试看。可能会对您有帮助。
People::withCount('pets')->groupBy(\DB::raw('id WITH ROLLUP'))->get();
要了解更多信息,请检查this
答案 1 :(得分:0)
您可以执行以下操作:
People::selectRaw('peoples.*, COUNT(pets.id) AS pets_count')
->rightJoin('pets', 'people.id', '=', 'pets.people_id')
->get()