Laravel计数关系的关系

时间:2019-03-05 14:15:12

标签: sql laravel eloquent

我正在尝试计算通过主表上的关系建立的关系中的行数。我总共有3张桌子。

调查:

| id |

问题:

| id | survey_id |

回复:

| id | question_id |

我正在尝试从调查表中获取响应表中的总数。我已经建立了所有关系,但是似乎无法获得总数。

我尝试做->withCount('questions.responses'),但这会导致500错误。我知道我可以遍历,但不知道在Eloquent中是否有更有效的方法可以做到这一点。

1 个答案:

答案 0 :(得分:0)

您可以使用Has Many Through关系来实现。

在您的模型中:

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