gpt4 book ai didi

php - 如何使 Doctrine PostgreSQL 外键约束 DEFERRABLE

转载 作者:搜寻专家 更新时间:2023-10-31 21:22:33 25 4
gpt4 key购买 nike

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

最佳答案

我在开发的一个应用程序中遇到了同样的问题,得出的结论是 Doctrine DBAL 中的 DEFERRABLE 支持没有暴露给 Doctrine ORM。

问题的症结在于ORM的SchemaTool gatherRelationJoinColumns() 方法不会发现除 onDelete 之外的任何 $fkOptions。为了支持添加“可延迟”,需要在 ORM 映射层中为其扩展语法。

在我的例子中,只修补 SchemaTool 以添加它比与上游协调以正确添加它更容易,因为很少有人提到想要在 Google 上使用高级 FK 选项的人。

我想我会在这里转储一个答案以避免其他人不得不自己追踪问题......

如果有人想提交关于它的 Doctrine ORM 问题,欢迎光临!

关于php - 如何使 Doctrine PostgreSQL 外键约束 DEFERRABLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43662614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com