Sufir
Я не волшебник, я только учусь
Дошли руки до Doctrine (2.4), никогда раньше не пользовался ей.
Если верить документации, то мне не обязательно явным образом устанавливать связующее поле при добавлении связанной сущности в коллекцию или свойство (в т.ч. и для двусторонних отношений, у меня же одностороннее):
Однако при попытке $em->flush() мне закономерно вываливается PDOException with message SQLSTATE[23502]: Not null violation в comment.author_id. Так всё-таки я должен где-то явно установить перед сохранением связующее поле? Или я не могу привязывать ещё не сохраненную сущность? Это будет странно, т.к. не могут быть комментарии без авторов и делать нужно всё в одной транзакции. Пробовал со связями и many-to-many и one-to-many (односторонней и двусторонними). Выбираются данные как положено.
Схема БД вот такая: http://doctrine-orm.readthedocs.org/en/latest/reference/association-mapping.html#one-to-many-bidirectional
Если убрать ограничение Not null, то запись осуществляется успешно, но конечно без привязки (если же настроить Unidirectional One-To-Many with Join Table, то после вставки doctrine всё же пытается сделать второй инсерт в связующую таблицу).
Короче, пока тупо через рефлексию $feature->product устанавливаю...
Если верить документации, то мне не обязательно явным образом устанавливать связующее поле при добавлении связанной сущности в коллекцию или свойство (в т.ч. и для двусторонних отношений, у меня же одностороннее):
PHP:
$user = $em->find('User', $userId);
// unidirectional many to many
$comment = $em->find('Comment', $readCommentId);
$user->getReadComments()->add($comment);
$em->flush();
// unidirectional many to one
$myFirstComment = new Comment();
$user->setFirstComment($myFirstComment);
$em->persist($myFirstComment);
$em->flush();
Схема БД вот такая: http://doctrine-orm.readthedocs.org/en/latest/reference/association-mapping.html#one-to-many-bidirectional
Если убрать ограничение Not null, то запись осуществляется успешно, но конечно без привязки (если же настроить Unidirectional One-To-Many with Join Table, то после вставки doctrine всё же пытается сделать второй инсерт в связующую таблицу).
Короче, пока тупо через рефлексию $feature->product устанавливаю...
Последнее редактирование: