Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 08.02.2014 00:34:09

Many to Many с повторяющимися ID но разными полями в связующей таблице

Есть таблица с фильмами:
id, name
Есть таблица с людьми:
id, name
Есть связующая таблица:
id, film_id, person_id, post
Где поле post это должность.

Проблема в том что у одного человека может быть несколько должностей в одном фильме:
Пример:
режиссер: Фрэнк Дарабонт
сценарий: Фрэнк Дарабонт, Стивен Кинг

Фрэнк Дарабонт — в базе имеет id=1
Стивен Кинг — в базе имеет id=2

Судя по документации добавлять данные в связующую таблицу нужно так

PHP
$user->roles()->sync(array(=> array('expires' => true)));

И вот тут проблемка возникает исходя из наших данных запрос будет таким

PHP
$film->people()->sync(array(
    
=>  array('post' => 'режиссер'),
    
=>  array('post' => 'сценарий'),
    
=>  array('post' => 'сценарий'),
));

Ну и сохранится только то что Фрэнк Дарабонт работал над сценарием т.к. мы потом переопределили ключ 1

Изменено la2ha (08.02.2014 00:36:40)

Не в сети

#2 08.02.2014 06:47:06

Re: Many to Many с повторяющимися ID но разными полями в связующей таблице

Решил проблему след образом:

PHP
$film->people()->sync(array()); // удаляем связанных с этим фильмом людей
$film->people()->attach(1, array('post' => 'режиссер'));
$film->people()->attach(1, array('post' => 'сценарий'));
$film->people()->attach(2, array('post' => 'сценарий'));

Изменено la2ha (08.02.2014 06:47:24)

Не в сети

Подвал раздела