使用Doctrine2和PostgreSQL,我需要创建外键约束DEFERRABLE和INITIALLY DEFERRED
在Doctrine/DBAL/Platforms/PostgreSqlPlatform.php中找到选项“deferrable”和“deferred”,但不知道在Entity注解中的何处使用它
<?php
/**
* Class User
*
* @ORM\Table(name="jira_issues_changelogs")
* @ORM\Entity
* @package JiraBundle\Entity\Issue
*/
class Changelog
{
/**
* @var string
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="\JiraBundle\Entity\Issue", inversedBy="changelog")
* @ORM\JoinColumn(name="issue", referencedColumnName="id")
Need this column foreign key to be DEFERRABLE INITIALLY DEFERRED
*/
protected $issue;
字符串
2条答案
按热度按时间axkjgtzd1#
我在一个我正在开发的应用程序中遇到了同样的问题,并得出结论,Doctrine DBAL中的DEFERRABLE支持没有暴露给Doctrine ORM。
问题的关键在于,在ORM的SchemaTool中,除了onDelete之外,ORM的JoinColumns()方法没有发现任何$fkOptions。为了支持添加'deferrable',需要在ORMMap层中扩展语法。
在我的例子中,只是修补SchemaTool来添加它比与上游协调来正确添加它更容易,因为很少有人提到想要在Google上使用高级FK选项。
我想我会在这里倾倒一个答案,以避免其他人不得不自己追踪这个问题...
如果有人想提出一个关于它的教义ORM问题,那就请便吧!
klh5stk12#
五年后有没有更新?