Я застрял в проблеме, и я не могу найти решение этого, это меня раздражает.Laravel 4 Многие для многих обновляют
Я две таблицы, одна называется контактов, а другой называется и телефонные книги они связаны с третьей таблицей под названием * contacts_phonebooks *, это многие-ко-многим резюмировать следующим образом:
- контакты: идентификатор (рк)
- : идентификатор телефонных книг (рк)
- contacts_phonebooks: ContactId (Ф.К.), phonebooksid (Ф.К.) Довольно просто и ясно, и она работает.
Я использую Laravel 4 и Eloquent ORM, все работает отлично, когда я должен его извлекать, вставлять и удалять, но когда мне нужно обновить контакт, я терплю неудачу. У меня есть форма, в которой есть несколько флажков, которые представляют все телефонные книги (каждый флажок имеет телефонную книгу [] как имя), поэтому, когда вы проверяете один из них, идентификатор телефонной книги будет сохранен в * contacts_phonebooks * с идентификатором контакта. Проблема в том, что это не так! Я имею в виду, когда я запускаю этот код:
$contact = Contact::find($id);
$contact->contact_name = Input::get('newCName');
$contact->contact_surname = Input::get('newCSurname');
$contact->contact_email = Input::get('newCEmail');
$contact->contact_phone = Input::get('newCPhone');
$contact->contact_birth = Input::get('newCDate');
$contact->phonebooks()->sync(Input::get('phonebook'));
if($contact->save())
{
return "TEST DONE?";
}
Он удаляет все строки в * contacts_phonebooks *, связанные с контактным идентификатором и сохранить только новую проверили ... Это странно, я знаю, я пытаюсь объяснить это лучше , Я хочу обновить Mr.x, и он действительно находится в телефонной книге «Stackoverflow», я хочу добавить его в телефонную книгу «Nerd», поэтому я нажимаю на обновление, и я выбрал «Nerd», другой уже выбран.
Когда я обновляю его систему удаляет «Stackoverflow» ссылку и сохранить только «Nerd» телефонная книга (с приведенным выше кодом) это вещи сводит меня с ума, потому что Laravel 4 Док говорит, что вы должны использовать синхронизации() чтобы обновить отношения «многие-ко-многим».
Я не понимаю, как это решить, надеюсь, вы поймете, в чем моя проблема.
Cheers.
Это кажется немного странным, но он работает ... поток процессов заключается в том, что я должен использовать каждый раз $ contact-> phonebooks() -> detach(), а затем $ contact-> phonebooks() -> attach (Input :: get ('phonebook')) –
В этом случае вы задаете неверные параметры синхронизации. Проверьте наш тестовый код, который я создал.http://paste.laravel.com/F3b – user1669496
Внешние ключи этой миграции сводных таблиц должны быть целыми числами, но на самом деле это не имеет большого значения, поскольку он все еще работает. – user1669496