想要对准则2 ORM进行删除时不采取任何行动,而对于更新2则ORM中进行更新时不采取行动

问题描述 投票:1回答:2

我创建了如下实体:

namespace Application\Entity;

use Doctrine\ORM\Mapping as ORM;
/**
 * Application\Entity\Example
 *
 * @ORM\Table(name="example")
 * @ORM\Entity
 */

class Example {
     //...
     /**
      *
      * @var datetime 
      * @ORM\Column(name="created_at", type="datetime", nullable=false)
      */
      private $createdAt;

     /**
      *
      * @var integer 
      * @ORM\ManyToOne(targetEntity="User")
      * @ORM\JoinColumn(name="created_by", referencedColumnName="iduser", onDelete="NO ACTION")
      */
      private $createdBy;

   //.........

}

我试图添加注释onDelete =“ NO ACTION”,但它没有任何作用。

我希望对MySQL的更新和删除均不采取任何措施。有什么方法可以做到,还是学说2不支持?

zend-framework orm doctrine-orm zend-framework2 doctrine
2个回答
2
投票

根据Doctrine-ORM文档的文档,@JoinColumn的属性是:

  • 名称
  • referencedColumnName
  • 独特
  • 可为空
  • onDelete
  • columnDefinition

因此,您在此处onDelete =“ NO ACTION”使用的属性应在此处使用。但是对于“更新时”,没有定义这样的属性。默认情况下,MySQL的(onUpdate)属性将使用“ Restrict”,这是[No Action]的同义词,如here所述。

根据我的信息,onUpdate属性已从教义2中删除。我不知道其背后的实际原因。但是,如果您不使用onUpdate并默认得到“ ON UPDATE = Restrict”,而不是您在问题中需要的“ ON UPDATE = No Action”,那就很好。


0
投票
/**
  * @ORM\ManyToOne(targetEntity="User")
  * @ORM\JoinColumn(name="created_by", referencedColumnName="iduser",onDelete="NO ACTION")
**/

然后您需要执行命令

>php bin/console doctrine:schema:update --force
© www.soinside.com 2019 - 2024. All rights reserved.