Laravel подсчитывает отношение отношения

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

Опросы:

| id |

Вопросы:

| id | survey_id |

Ответы:

| id | question_id |

Я пытаюсь получить общее количество в таблице ответов из таблицы опросов. У меня настроены все отношения, но я не могу получить общее количество.

Я пытался сделать ->withCount('questions.responses'), но это приводит к ошибке 500. Я знаю, что могу выполнить цикл, но не знал, есть ли более эффективный способ сделать это в Eloquent.


person Community    schedule 05.03.2019    source источник
comment
у вас есть определенные отношения HasManyThrough?   -  person Piazzi    schedule 05.03.2019
comment
Даже не думал об этом, можете ли вы добавить ответ, чтобы я мог принять   -  person    schedule 05.03.2019


Ответы (1)


Этого можно добиться с помощью отношения Имеет много через.

В вашей модели:

/* Survey.php */

public function responses()
{
    return $this->hasManyThrough(Response::class, Question::class);
}

Затем в вашем контроллере:

/* SurveyController.php */

public function index()
{
    // Get your surveys with your desired attribute:
    $surveys = Survey::withCount('responses')->get();

    return view('my_cool_view')->withSurveys($surveys);
}
person Piazzi    schedule 05.03.2019
comment
Надеюсь, вы не возражаете, что я обновил ваш вопрос. Я отвечал, пока вы публиковали свой, и, учитывая, что вы предложили этот подход, я думаю, что это правильно, а не публиковать его самому. Вы можете отменить это, если хотите. Хорошего дня. - person Kenny Horna; 05.03.2019
comment
Спасибо за редактирование, друг. Я не против, Добрый день :) - person Piazzi; 05.03.2019