Zend Framework Doctrine вставляет один ко многим - PullRequest
0 голосов
/ 28 февраля 2011

Среди таблиц заказов у ​​меня есть таблица клиентов и таблица адресов.У клиента может быть много адресов, поэтому я настроил отношение «один ко многим» в файле yaml.Дело в том, что идентификатор таблицы Customers генерируется автоматически, поэтому я не буду знать Customers_id до тех пор, пока после вставки идентификатор Customers_id не станет внешним ключом в таблице адресов.та же форма, хотя каждый набор данных находится в подчиненной форме.Как заставить Doctrine вставить данные в таблицу Customers, затем выбрать только что введенный Customers_id и использовать его в качестве внешнего ключа для таблицы адресов.

Надеюсь, я смог разобраться в сути вопроса.

Кстати, я использую Zend Framework и Doctrine 1.2.3

Ответы [ 3 ]

1 голос
/ 28 февраля 2011

После того как вы выполните $ customer-> save (), вы можете использовать $ customer-> id (если «id» - это имя столбца Customers_id вашей таблицы клиентов), чтобы заставить Customers_id поместить в таблицу адресов.

0 голосов
/ 01 марта 2011

Предполагая, что вы используете Doctrine 1.x, вы можете сделать следующее:

$cusomer->Address[] = $address; // Assign multiple addresses in this manner
$customer->save();

Это сначала сохранит данные клиента в БД, а затем сохранит данные адреса.Поскольку доктрина понимает связь между клиентом и адресом, ORM вставит идентификатор клиента в таблицу адресов.Кроме того, Doctrine выполнит эту транзакцию в транзакции, которая гарантирует, что в случае сбоя одной из операций будет выполнена откат всей транзакции.

0 голосов
/ 28 февраля 2011

Как только вы сделаете $ customer-> save (); следующий оператор $ customer-> identifier (); должен дать вам идентификатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...