#javascript #php #laravel #model #relationship
#javascript #php #laravel #Модель #связь
Вопрос:
это мои таблицы выглядят так
отделы | курс | темы |
---|---|---|
ID | ID | ID |
глава | department_id | course_id |
имя_курса | subject_code |
в моих моделях я делаю это так, но, похоже, не работает, и я не знаю почему:
public function departments()
{
return $this->hasOneThrough(
subjectlist::class,
department::class,
'id',
'course_id',
'id',
'id'
);
}
Вывод, когда я пытаюсь использовать hasOneThrough
:
{
"id": 1,
"department_name": "Business",
"head": "John smith",
"email": "smith@gmail.com",
"contact_number": "09300282103",
"created_at": null,
"updated_at": null,
"subject_list": {
"id": 1,
"course_id": 1,
"subject_code": "Math1",
"description": "math test",
"year_type": 1,
"price": "200.00",
"units": "5.00",
"created_at": null,
"updated_at": null,
"laravel_through_key": 1
}
}
Я не хочу, чтобы результат был таким, пожалуйста, помогите мне, как это сделать:
{
"id": 1,
"department_name": "Business",
"head": "John smith",
"email": "smith@gmail.com",
"contact_number": "09300282103",
"created_at": null,
"updated_at": null,
"subject_list": {
"id": 1,
"course_id": 1,
"subject_code": "Math1",
"description": "math test",
"year_type": 1,
"price": "200.00",
"units": "5.00",
"created_at": null,
"updated_at": null,
"laravel_through_key": 1
},
"department": {
"id": 1,
"department_name": "ComputerScience"
}
}
Комментарии:
1. Пожалуйста, не могли бы вы показать свой код запроса модели.
Ответ №1:
Отношения между вашими таблицами похожи на Subject, поскольку у курса есть отдел, а у предмета есть отдел через курс
Отношение для вашей предметной модели
public function Course() {
return $this->belongsTo(Course::class);
}
public function Department() {
return $this->hasOneThrough(Department::class, Course::class)
}
Связь для вашей модели курса
public function Subject() {
return $this->hasMany(Subject::class);
}
public function Department() {
return $this->belongsTo(Department::class);
}
Отношение для вашей модели отдела
public function Course() {
return $this->hasMany(Course::class);
}
Для получения дополнительной информации обратитесь к документации laravel eloquent
relations https://laravel.com/docs/8.x/eloquent-relationships#has-one-through