У меня есть связь между категорией видео и видеокурсами, в одной категории может быть много курсов, я хочу получить видеокурсы через элемент категории видео, но получаю сообщение об ошибке
Модель категории видео
class VideoCategory extends Model
{
public function video_courses(){
return $this->hasMany('App\VideoCourse');
}
}
Модель видеокурса
class VideoCourse extends Model
{
public function video_category()
{
return $this->belongsTo(VideoCategory::class);
}
}
Мой вид
@forelse ($category->video_courses as $video_course)
<a href = "#"">{{$course->title}}</a>
@empty
<p>No Video Courses Available</p>
@endforelse
Ошибка:
(4/4) Исключение ошибки
SQLSTATE[42S22]: Столбец не найден: 1054 Неизвестный столбец 'video_courses.video_category_id' в 'предложении where' (SQL: выберите * из video_courses, где video_courses.video_category_id = 2 и video_courses.video_category_id не равно нулю, а video_courses.deleted_at равно нулю) ( Вид: C:\xampp\htdocs\QuickLMS\resources\views\category.blade.php)






Похоже, столбцы вашей таблицы не соответствуют вашему отношению «многие к одному». В вашей таблице video_courses должен быть столбец video_category_id. Таким образом, каждая запись курса указывает, к какой категории она принадлежит.
Если вы используете другой ключ для id, убедитесь, что вы указали его в методе отношения, например:
public function video_courses() {
// second parameter is the foreign key.
return $this->hasMany(VideoCourse::class, 'video_course_id');
}
Во втором параметре каждой из групп containsTo и hasMany вы должны определить внешний ключ, который связывает эти две таблицы:
class VideoCourse extends Model
{
public function video_category()
{
return $this->belongsTo(VideoCategory::class, 'video_category_id');
}
}
class VideoCategory extends Model
{
public function video_courses(){
return $this->hasMany(VideoCourse::class,'video_category_id');
}
}
Ошибка говорит, что у вас нет поля video_category_id в качестве внешнего ключа в вашей таблице. Передайте имя столбца внешнего ключа во втором параметре.
@Нурдаулет Шамилов, какой у тебя внешний ключ в таблице videoCourses?
Предоставьте ключ для отношений в модели VideoCategory
public function video_courses() {
return $this->hasMany(VideoCourse::class, 'video_course_id');
}
Попробуйте
$courses = VideoCategory::find(1)->video_courses. И убедитесь, что он возвращает collection. Тогда ищите следующие ответы.