Отношение «один ко многим» Laravel получает ошибку

У меня есть связь между категорией видео и видеокурсами, в одной категории может быть много курсов, я хочу получить видеокурсы через элемент категории видео, но получаю сообщение об ошибке

Модель категории видео

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)

Попробуйте $courses = VideoCategory::find(1)->video_courses. И убедитесь, что он возвращает collection. Тогда ищите следующие ответы.

unclexo 04.05.2019 13:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
1
195
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Похоже, столбцы вашей таблицы не соответствуют вашему отношению «многие к одному». В вашей таблице 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?

Salar Bahador 04.05.2019 13:13

Предоставьте ключ для отношений в модели VideoCategory

public function video_courses() {
return $this->hasMany(VideoCourse::class, 'video_course_id');
} 

Другие вопросы по теме