按关系 id 收集并获取计数
Collection pluck by relation id and get count
我有项目和国家模型。存在多对多关系。我得到了与国家的项目。结果如下
array:5 [▼
0 => array:5 [▼
"id" => 2
"account_id" => 1
"start_date" => "Jul 2012"
"end_date" => "Aug 2013"
"countries" => array:1 [▼
0 => array:2 [▼
"id" => 148
"pivot" => array:2 [▶]
]
]
]
1 => array:5 [▶]
2 => array:5 [▶]
3 => array:5 [▶]
4 => array:5 [▶]
]
我不会计算所有独特的国家/地区。现在我是这样做的
$projects->pluck('countries')->collapse()->pluck('id')->unique()->count()
问题。我可以将 pluck 与嵌套关系列一起使用,并且有更快捷、更好的解决方案吗?例如像这样
$projects->pluck('countries.id')->count();
或者反过来...
Country::whereHas('projects', function ($query) {
// $query->where(); if you want to limit the projects
})->count();
自从您从 table
国家/地区获取以来,您获得了独特的国家/地区
你可以使用这个:
$projects->pluck('countries.*.id')->flatten()->unique()->count()
您不能使用:
$projects->pluck('countries.id')...
因为国家是一个数组数组。
但是您可以在这些情况下使用 'countries.*.id'
我找到了这个解决方案
$projects->groupBy('countries.*.id')->count();
我有项目和国家模型。存在多对多关系。我得到了与国家的项目。结果如下
array:5 [▼
0 => array:5 [▼
"id" => 2
"account_id" => 1
"start_date" => "Jul 2012"
"end_date" => "Aug 2013"
"countries" => array:1 [▼
0 => array:2 [▼
"id" => 148
"pivot" => array:2 [▶]
]
]
]
1 => array:5 [▶]
2 => array:5 [▶]
3 => array:5 [▶]
4 => array:5 [▶]
]
我不会计算所有独特的国家/地区。现在我是这样做的
$projects->pluck('countries')->collapse()->pluck('id')->unique()->count()
问题。我可以将 pluck 与嵌套关系列一起使用,并且有更快捷、更好的解决方案吗?例如像这样
$projects->pluck('countries.id')->count();
或者反过来...
Country::whereHas('projects', function ($query) {
// $query->where(); if you want to limit the projects
})->count();
自从您从 table
国家/地区获取以来,您获得了独特的国家/地区你可以使用这个:
$projects->pluck('countries.*.id')->flatten()->unique()->count()
您不能使用:
$projects->pluck('countries.id')...
因为国家是一个数组数组。
但是您可以在这些情况下使用 'countries.*.id'
我找到了这个解决方案
$projects->groupBy('countries.*.id')->count();