#php #laravel #relationship
Вопрос:
Я не профессионал ни в PHP, ни в Laravel, и я думаю, что загнан в угол. В моем приложении для оценки у меня есть курсы, уроки и оценочные тесты. Тест оценки имеет отношение «много к одному» к уроку. урок также имеет множество взаимосвязей с курсом. Теперь возникает проблема, как мне получить все курсы, к которым относится коллекция тестов оценки? Как показано в приведенных фрагментах кода, я попытался обойти это, вручную просмотрев коллекцию и сохранив курсы в массив, но получил какую-то странную ошибку.
Попытка получить свойство «курс» не-объекта
Вот моя проблемная функция
public function index()
{
$attempts=AssessmentAttempt::all();
$i=0;
$courses=array();
foreach ($attempts as $attempt) {
// dd($attempt->lesson->course);
$courses[$i ]=$attempt->lesson->course;
}
dd(array_unique($courses));
return view('achievements.index', ['attempts'=>$attempts, 'courses'=>$courses]);
}
Оценочная модель
public function lesson()
{
return $this->belongsTo(Lesson::class);
}
Модель урока
public function course()
{
return $this->belongsTo(Course::class);
}
public function assessmentAttempts()
{
return $this->hasMany(AssessmentAttempt::class);
}
Ответ №1:
в assesment_modal определите связь с курсом и создайте столбец идентификатора курса в качестве внешнего ключа в таблице assesment_model
верните $this->hasMany(Курс::класс, «иностранный ключ»);
также разработайте отношение в модели курса
верните $this->Принадлежит(Assesment_Model::класс);
Комментарии:
1. спасибо, но я пытался избежать этого. Оценка связана с уроком, который, в свою очередь, связан с курсом. Я прыгал, есть другой способ