Laravel withCount包含空关系

时间:2019-04-25 17:45:02

标签: php mysql laravel eloquent

我希望withCount包括不存在的关系的数量。

例如,假设我有一个名为people的表和一个名为pets的表。

people有很多pets,但是pets可以为空people_id。我想对每个pets的{​​{1}}进行计数,但是我也想包含没有people的{​​{1}}。

我知道我可以简单地做pets,但这不包括people_id为空的People::withCount('pets')->get()的计数。

我要寻找的结果是这样的:

pets

我希望这是有道理的。

2 个答案:

答案 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()