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', 'Research');
            });
        }]);
    }])
    ->get()
    ->transform(function ($company) {
        $company->contacts_association_count = $company->interactionSummaries
            ->pluck('interaction.contacts_association_count')
            ->collapse()
            ->sum();
    });

当我尝试dd($companies)甚至return $companies在每个数组索引中放置空值时

数组键中的空值

但是当我在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。

收集计数

我用红色标记了它们。帮我解决这个问题

4

2 回答 2

2

我认为您return在转换闭包中缺少一个语句。

于 2017-09-21T17:14:33.353 回答
0

您需要将return $company语句放入转换中。

于 2018-01-05T05:07:08.130 回答