1
我使用Symfony2與Doctrine的Annotations在表之間創建引用。在創建表時,它看起來是這樣的:Symfony2 Doctrine Annotations&UNIQ_或FK_定製
CREATE TABLE `guardian` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fos_user_id` int(11) NOT NULL,
`first_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`last_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `UNIQ_644860558C20A0FB` (`fos_user_id`),
CONSTRAINT `FK_644860558C20A0FB` FOREIGN KEY (`fos_user_id`) REFERENCES `fos_user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
做到這一點的方法是在代碼中創建這些註釋,然後運行:
php app/console doctrine:schema:update --force
這裏的註解的一個參考文獻:
/**
* @ORM\OneToOne(targetEntity="SF\UserBundle\Entity\User")
* @ORM\JoinColumn(name="fos_user_id", referencedColumnName="id")
*/
private $fosUser;
正如您從「show create table」所看到的那樣;以上,密鑰的名稱和約束條件都是非人性化的。我猜「UNIQ_644860558C20A0FB」只是「UNIQ_」並隨機添加一些內容。
我想要做的是實際給這個名稱,如「UNIQ_fos_user_id」。這樣做的原因是,如果你得到一個錯誤,如下面,這真的很難迅速發生了什麼事情上看到,和關鍵的問題(特別是如果有多個獨特的或外鍵:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'UNIQ_644860558C20A0FB'
我看着。在文檔here,卻看不到任何註釋屬性,將讓我做這個
這就是最少開始,謝謝:)你從哪裏找到的? – Sarel 2013-03-27 12:47:16
http://docs.doctrine-project.org/en/latest/reference/annotations-reference.html#annref-uniqueconstraint – 2013-03-27 13:19:47