在Doctrine中插入具有关系的记录后获取ID

Oma*_*awi 4 php orm doctrine uniqueidentifier

在使用PHP Doctrine Project插入新记录后获取id时遇到问题.

在没有父表(没有外键)的表中插入新记录时,不会出现问题.但是当在这里插入一个相关的记录时出现问题,我只得到在我的情况下无用的父ID.

PHP代码示例:

$city = new City();
$city->name = "Baghdad";
$city->country_id = 6;
$city->save();
print_r($city->identifier());
exit;
Run Code Online (Sandbox Code Playgroud)

输出是:

Array
(
    [id] => 
    [country_id] => 6
)
Run Code Online (Sandbox Code Playgroud)

为什么ID是空的!,成功插入行!我需要这个来做更多基于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;
Run Code Online (Sandbox Code Playgroud)

顺便说一句:我正在使用该Doctrine::generateModelsFromDb()方法生成ORM模型类.

PS:使用Doctrine版本1.2.1,mysql:innodb 5.0.75-0ubuntu10.2和php 5.2.6-3ubuntu4.5.

Oma*_*awi 5

一位同事发现了解决方案.这是因为这行代码:

PRIMARY KEY  (`id`,`country_id`),
Run Code Online (Sandbox Code Playgroud)

我用过这个:

PRIMARY KEY  (`id`),
Run Code Online (Sandbox Code Playgroud)

它工作正常.

我想这是一个MySQL问题.不是,这是我的表格设计中的错误.