Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Вечер добрый!
Коль, все в чате молчат, задам интересующие вопросы сюда.
Мои действия, прописываю значит я в модели Book
public function categories() {
return $this->belongsToMany('Category');
}
public function authors() {
return $this->belongsToMany('Author');
}
и соответственно в модели Автор и Рубрика
public function books() {
return $this->belongsToMany('Book');
}
Сама миграция - pastebin
Тут и появились вопросы:
1. Немного смущает, что в книге могут быть авторЫ и рубрикИ. Я придумал заносить авторов и рубрики в таблицу книг, если их больше 1го через запятую, к примеру 1,2,3,4...
1.1 Если бы не авторЫ и не рубрики, то можно было бы сделать внешними ключами автора и рубрику в таблице книги и не париться.
2. Как быть например, если я вывожу всю информацию по книге??? Сначала я просто выводил id авторов, но нужно ведь подставить туда ФИО.
3. Или же при редактировании книги, при генерации выбранного селекта, как быть в таких случаях?
4. Может лучше создать доп. таблицу books_authors, ну и туда первичные ключи от книг и авторов занести?
У Вас структура БД неправильная. Для связей многие-ко-многим (книги-авторы, книги-рубрики) нужны pivot таблицы. Поправьте миграции. Должно быть что-то в этом роде:
книги
название
фото
книги-авторы
книга_id
автора_id
авторы
имя
фамилия
книги-рубрики
книга_id
рубрика_id
рубрики
название
Тогда складирование данных не будет смущать ни Вас, ни Eloquent (вопросы 1.*).
Зависимости вытягивайте при запросе с помощью with('authors', 'categories') (вопрос 2).
Читайте мануал (вопрос 3).
И в самом конце Вы вышли-таки на принципы построения архитектуры БД. Почитайте лучше что-нибудь касательно реляционных БД и работы с ними. Рекомендую Мартина Грабера SQL.
Изменено SMGladkovskiy (28.11.2014 10:33:51)
Не в сети
У Вас структура БД неправильная. Для связей многие-ко-многим (книги-авторы, книги-рубрики) нужны pivot таблицы. Поправьте миграции. Должно быть что-то в этом роде:
Тогда складирование данных не будет смущать ни Вас, ни Eloquent (вопросы 1.*).
Зависимости вытягивайте при запросе с помощью with('authors', 'categories') (вопрос 2).
Читайте мануал (вопрос 3).
И в самом конце Вы вышли-таки на принципы построения архитектуры БД. Почитайте лучше что-нибудь касательно реляционных БД и работы с ними. Рекомендую Мартина Грабера SQL.
Спасибо большое за ответ.
Да про pivot таблицы я думал из самого начала, что-то меня сбили эти авторы и рубрики.
Связи же остаются в моделях те же?
Связи же остаются в моделях те же?
Да.
Не в сети
Всё думал в голове как буду это всё реализовывать, но возник еще один вопрос. На теории я представляю как будет, а вот реализацию не могу понять. Допустим добавляем мы новую книгу и эта книга относиться, больше чем к одной категории допустим или вместо категорий, авторы к примеру. Как в этом случае мы будем добавлять запись в бд? Через цикл? Это получается один запрос будет идти в табл. книга, а второй в категории-книги ?
Смотрите мануал. Там есть информация о том, как управлять зависимостями. Вам нужен sync(). Можно обойтись без цикла, одним запросом.
Не в сети
Смотрите мануал. Там есть информация о том, как управлять зависимостями. Вам нужен sync(). Можно обойтись без цикла, одним запросом.
Понял вас. Спасибо большое.
Страницы 1