1

我正在尝试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,collapsesum方法,但我不知道它没有按预期计算。以下是截图:

我得到的集合列表如下:

公司名单

现在我得到了属性:

属性

现在关系数据:

关系数据

现在交互数据,计数所属的位置:

交互数据

所以为此我尝试了:

$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

帮我解决这个问题。谢谢

4

1 回答 1

2

我相信你的问题是在你应该有一个平面数组->collapse()之后看到你的例子,就好像你应用到一个平面数组它返回一个 void 数组并且 void 数组的总和是 0->pluck('interaction.contacts_association_count')[1,2,3,4,5]collapse()[]

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

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

于 2017-09-22T03:35:39.360 回答