Мне кажется правильным, я просто не видел модель TesteQuestion (ваше последнее отношение).
Отвечая на ваш вопрос:
HasManyThrough Отношение - это всего лишь ярлык для доступа к удаленным отношениям через промежуточное отношение, в вашем случае: у пользователей много оценок, в которых проводится много опросов. С помощью этого отношения вы можете получить все опросы от пользователя.
Ваше отношение будет выглядеть так:
/**
* Get all of the surveys for the user.
*/
public function surveys()
{
return $this->hasManyThrough('App\Survey', 'App\Evaluation');
}
Вы можете получить доступ к этому отношению, как это:
$user->surveys();
Но вы можете достичь того же (без использования HasManyThrough ), выполнив:
$user->evaluations()->surveys();
Остерегайтесь, что это будет верните оценки тоже , а не только опросы, и это требует дополнительной обработки.
Так что я рекомендую использовать отношение HasManyThrough, если вы претендуете на частый доступ к опросам.