У меня проблемы с получением идентификатора после вставки новой записи с использованием PHP Doctrine Project.
При вставке новой записи в таблицу без родительской таблицы (без внешнего ключа) проблем не возникает.
Но при вставке связанной записи возникает проблема: я получаю только родительский идентификатор, который в моем случае бесполезен.
Пример кода PHP:
$city = new City();
$city->name = "Baghdad";
$city->country_id = 6;
$city->save();
print_r($city->identifier());
exit;
Вывод:
Array
(
[id] =>
[country_id] => 6
)
Почему идентификатор пуст !, где строка была успешно вставлена !.
Мне нужно сделать это для большей вставки, основанной на city.id, как в других областях, где этот город является родителем.
Примечание с использованием $city->id
вызывает эту ошибку:
Warning: Invalid argument supplied for foreach() in Doctrine/Record.php on line 1151
База данных SQL-дамп:
CREATE TABLE IF NOT EXISTS `country` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(64) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=7 ;
CREATE TABLE IF NOT EXISTS `city` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(64) collate utf8_unicode_ci NOT NULL,
`country_id` int(11) NOT NULL,
PRIMARY KEY (`id`,`country_id`),
KEY `fk_city_country` (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=11 ;
ALTER TABLE `city`
ADD CONSTRAINT `fk_city_country` FOREIGN KEY (`country_id`) REFERENCES `country` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION;
Кстати: я использую метод Doctrine::generateModelsFromDb()
для генерации классов модели ORM.
PS: использование Doctrine версии 1.2.1, mysql: innodb 5.0.75-0ubuntu10.2 и php 5.2.6-3ubuntu4.5.