我试图在laravel-5.4
上构建一个小应用程序,我的关系查询是这样的:
$companies = Company::where('is_client', '=', 1)
// load count on distant model
->with(['interactionSummaries.interaction' => function ($q) {
$q->withCount(['contactsAssociation' => function ($q) {
$q->whereHas('company', function ($q) {
$q->where('type', 'like', 'Investor');
});
}]);
}])
->get();
现在我要收集查询中生成的所有contact_association_counts
并将其添加到各个公司集合中为此我使用pluck
,collapse
和{{1}方法,但我不知道它没有按要求计算。以下是截图:
我收集如下列表:
现在我得到了属性:
现在是关系数据:
现在计数属于的交互数据:
所以为此,我尝试了:
sum
但这不是计算计数,所有计数都是0
帮助我解决这个问题。感谢
答案 0 :(得分:2)
我认为,如果您将->collapse()
应用于平面阵列,->pluck('interaction.contacts_association_count')
[1,2,3,4,5]
您应该将平面数组设为collapse()
,那么您的问题是[]
看到您的示例返回void数组$companies = Company::where('is_client', '=', 1)
// load count on distant model
->with(['interactionSummaries.interaction' => function ($q) {
$q->withCount(['contactsAssociation' => function ($q) {
$q->whereHas('company', function ($q) {
$q->where('type', 'like', 'Investor');
});
}]);
}])
->get()
->transform(function ($company) {
$company->contacts_association_count = $company->interactionSummaries
->pluck('interaction.contacts_association_count')
//->collapse()
->sum();
return $company;
});
,void数组的总和为0
Hello World
我希望它有效......祝你好运!