Je rencontre des problèmes pour obtenir l'ID après l'insertion d'un nouvel enregistrement à l'aide de PHP Doctrine Project.Obtention d'un ID après l'insertion d'un enregistrement ayant une relation dans Doctrine
Lors de l'insertion d'un nouvel enregistrement dans une table sans table parent (aucune clé étrangère), aucun problème ne se produit. Mais lors de l'insertion d'un enregistrement lié vient le problème, que je reçois seulement l'identifiant parent qui est inutile dans mon cas.
PHP exemple de code:
$city = new City();
$city->name = "Baghdad";
$city->country_id = 6;
$city->save();
print_r($city->identifier());
exit;
La sortie est la suivante:
Array
(
[id] =>
[country_id] => 6
)
Pourquoi l'ID est vide !, où la ligne a été insérée avec succès !. J'ai besoin de ceci pour faire plus d'insertion qui a basé le city.id, comme d'autres régions qui ont cette ville en tant que parent.
Remarque à l'aide des $city->id
provoque cette erreur: Warning: Invalid argument supplied for foreach() in Doctrine/Record.php on line 1151
base de données SQL Dump:
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;
BTW: J'utilise la méthode Doctrine::generateModelsFromDb()
pour générer des classes de modèle ORM. PS: en utilisant la version 1.2.1 de Doctrine, mysql: innodb 5.0.75-0ubuntu10.2, et php 5.2.6-3ubuntu4.5.
Vous avez deux tables de pays dans votre vidage db, table de la ville est manquant – Karsten
Mon mauvais, je l'ai édité. –