Php 如何使用laravel收集方法
我试图查询嵌套关系并获取远程模型计数,我正在将其转换为一个变量,但它没有发生:Php 如何使用laravel收集方法,php,laravel,laravel-5.4,laravel-collection,Php,Laravel,Laravel 5.4,Laravel Collection,我试图查询嵌套关系并获取远程模型计数,我正在将其转换为一个变量,但它没有发生: $companies = Company::where('is_client', '=', 1) // load count on distant model ->with(['interactionSummaries.interaction' => function ($q) { $q->withCount(['contactsAssociation' =>
$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', 'Research');
});
}]);
}])
->get()
->transform(function ($company) {
$company->contacts_association_count = $company->interactionSummaries
->pluck('interaction.contacts_association_count')
->collapse()
->sum();
});
当我尝试dd($companys)
或甚至返回$companys
时,我会在每个数组索引中得到空值
但是当我做dd($company)
内部转换时
->transform(function ($company) {
$company->contacts_association_count = $company->interactionSummaries
->pluck('interaction.contacts_association_count')
->collapse()
->sum();
dd($company);
});
我得到一个集合,该集合表示我的查询正在正常运行:
如果我删除变换部分并仅获取集合:
$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', 'Research');
});
}]);
}])
->get()
我得到了所需的输出,但我不知道在转换执行之后会发生什么。事实上,这并不是在计算和相加,因为我得到的是计数中的所有0
我把它们标上了红色。在这个中帮助我,我想你在转换闭包中缺少了一个返回语句。我想你在转换闭包中缺少了一个返回语句。你需要在转换中放入return$company语句。我更新了这个问题,集合未按要求进行求和。那么您有什么?你能修复它吗?我已经更新了问题,集合没有按预期进行汇总。那么你有什么?你能修好吗?你的答案不是很清楚。这应该放在代码中的什么位置。请在发布前阅读SO指南。您的答案不是很清楚。这应该放在代码中的什么位置。请在发布前阅读SO指南。