Как использовать методы сбора laravel

Я пытаюсь запросить вложенное отношение и получить количество удаленных моделей, я преобразовываю это в переменную, но этого не происходит:

$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 в подсчетах.

счетчик коллекций

Я отметил их красным. Помогите мне в этом


person Nitish Kumar    schedule 21.09.2017    source источник


Ответы (2)


Я думаю, что вам не хватает оператора return в закрытии преобразования.

person Oluwatobi Samuel Omisakin    schedule 21.09.2017
comment
Я обновил вопрос, сбор не делает сумму, как хотелось бы. - person Nitish Kumar; 21.09.2017
comment
Итак, что у вас есть? Удалось ли вам это исправить? - person Oluwatobi Samuel Omisakin; 28.09.2017

Вам нужно поместить оператор return $company в преобразование.

person Hallo Hallo    schedule 05.01.2018
comment
Ваш ответ не очень ясен. Где это должно быть помещено в коде. Пожалуйста, прочитайте руководство SO перед публикацией. - person sparkplug; 05.01.2018