如何使用 laravel collection 辅助方法?

How to use laravel collection helper methods?

我正在尝试在 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 并将其添加到单个公司 collection 为此,我使用 pluckcollapsesum 方法,但我不知道它是否按要求计算。以下为截图:

我得到 collection 的列表如下:

现在我得到了属性:

现在关系数据:

现在交互数据,计数所属:

为此我尝试了:

$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;
    });

但这不是在计算计数,所有计数都将变为 0

帮我解决这个问题。谢谢

我认为你的问题是 ->collapse()->pluck('interaction.contacts_association_count') 之后看到你的示例 如果你将 collapse() 应用到平面,你应该有一个平面数组作为 [1,2,3,4,5] array it returns a void array [] and a void array 的总和为 0

$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;
    });

我希望它有用...祝你好运!