Laravel от одного ко многим

#php #laravel

#php #laravel

Вопрос:

Используя Laravel, я создаю веб-приложение для архивирования фильмов и сериалов. Я застрял в области категорий, и мне нужна ваша помощь. Позвольте мне рассказать вам, где я тусуюсь. В области фильмов фильм может относиться к нескольким категориям. Я хочу показать фильмы, которые находятся в этой категории, на моей странице фильмов в виде списка. Я понятия не имею, как это сделать.Прошу прощения за мой плохой английский.

Ответ №1:

вам нужно создать три таблицы, первая из которых

 movies
  

с такими столбцами, как этот

 id,movie_name,movie_director,movice_info ..ect
  

столбец id должен быть primary int not null auto increment
вторая таблица будет

 categorys
  

с такими столбцами, как этот

 id,category_name,category_parent_id
  

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

 id           category_name                 category_id
1             comedies movies                null
2             actions comedies movies        1
3             drama comedies  movies         1
4             dramas movies                  null
5             sad drama movies               4
  

помните, что вы будете размещать фильмы не внутри родительских категорий, а внутри дочерних категорий, в которых столбец category_id не равен нулю
или вы можете создать таблицу с именем anther category_ids и установить отношение anther

и теперь третья таблица называется

 movie_categorys
  

в нем будут эти столбцы

 id,movie_category_movie_id,movie_category_category_id
  

допустим, у вас есть три фильма
с этими данными

 id            movie name           ect data
1              first move             ect..
2              second movie           ect .. 
  

и эта категория

 id           category_name                 category_id
1             comedies movies                null
2             actions comedies movies        1
3             drama comedies  movies         1
4             dramas movies                  null
5             sad drama movies               4
  

и вы хотите, чтобы первый фильм был внутри категории actions comedies movies и category sad drama movies
вы будете помещать данные внутрь movie_categorys следующим образом

 id        movie_category_movie_id  movie_category_category_id
number          1                        2
number          1                        5
  

и вы хотите поместить второй фильм с категориями drama comedies movies и sad drama movies и actions comedies movies
ваши данные будут выглядеть следующим образом

 id        movie_category_movie_id  movie_category_category_id
number          2                        2
number          2                        3
number          2                        5
  

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

 Movie
  

вы должны написать это отношение

фильмы принадлежат ко многим категориям, а в категории много фильмов, я надеюсь, что это ответ на ваш вопрос

Ответ №2:

Это отношение «Многие ко многим». Вам нужно 3 таблицы:

 movies
-id


category_movie
-movie_id
-category_id

categories
-id
  

В вашей модели фильма определите ответственность

 public function categories()
{
return $this->belongsToMany(Category::class);
}