代码之家  ›  专栏  ›  技术社区  ›  Nitish Kumar

如何使用laravel collection helper方法?

  •  1
  • Nitish Kumar  · 技术社区  · 8 年前

    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 sum 方法,但我不知道它没有按预期计算。以下是屏幕截图:

    list of company

    现在我得到了属性:

    Attributes

    现在是关系数据:

    relational data

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

    Interaction data

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

    帮我解决这个问题。谢谢

    1 回复  |  直到 8 年前
        1
  •  2
  •   Sergio Contreras Sustaita    8 年前

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

    我希望它能起作用。。。祝你好运

    推荐文章