我遇到了一个问题,在使用PHP Doctrine Project插入新记录后,无法获取id。
如果在没有父表(没有外键)的表中插入新记录,则不会出现任何问题。 但是,当插入相关记录时,问题就来了,我只能获得无用的父ID。
PHP代码示例:
$city = new City();
$city->name = "Baghdad";
$city->country_id = 6;
$city->save();
print_r($city->identifier());
exit;
输出结果为:
Array
(
[id] =>
[country_id] => 6
)
为什么ID是空的!在成功插入行的地方!。 我需要根据城市.id进行更多的插入,例如另一个具有该城市作为父级的区域。
注意使用$city->id
会导致此错误:
警告:在Doctrine/Record.php的第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。