php 如何使Doctrine PostgreSQL Foreign Key constraint DEFERABLE

jfgube3f  于 2023-11-16  发布在  PHP
关注(0)|答案(2)|浏览(91)

使用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;

字符串

axkjgtzd

axkjgtzd1#

我在一个我正在开发的应用程序中遇到了同样的问题,并得出结论,Doctrine DBAL中的DEFERRABLE支持没有暴露给Doctrine ORM。
问题的关键在于,在ORM的SchemaTool中,除了onDelete之外,ORM的JoinColumns()方法没有发现任何$fkOptions。为了支持添加'deferrable',需要在ORMMap层中扩展语法。
在我的例子中,只是修补SchemaTool来添加它比与上游协调来正确添加它更容易,因为很少有人提到想要在Google上使用高级FK选项。
我想我会在这里倾倒一个答案,以避免其他人不得不自己追踪这个问题...
如果有人想提出一个关于它的教义ORM问题,那就请便吧!

klh5stk1

klh5stk12#

五年后有没有更新?

相关问题