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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了想要对准则2 ORM进行删除时不采取任何行动,而对于更新2则ORM中进行更新时不采取行动相关的知识,希望对你有一定的参考价值。

我创建了如下实体:

namespace ApplicationEntity;

use DoctrineORMMapping as ORM;
/**
 * ApplicationEntityExample
 *
 * @ORMTable(name="example")
 * @ORMEntity
 */

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

     /**
      *
      * @var integer 
      * @ORMManyToOne(targetEntity="User")
      * @ORMJoinColumn(name="created_by", referencedColumnName="iduser", onDelete="NO ACTION")
      */
      private $createdBy;

   //.........

}

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

我希望对mysql的更新和删除均不采取任何措施。有什么方法可以做到,还是学说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”,那就很好。

另一答案
/**
  * @ORMManyToOne(targetEntity="User")
  * @ORMJoinColumn(name="created_by", referencedColumnName="iduser",onDelete="NO ACTION")
**/

然后您需要执行命令

>php bin/console doctrine:schema:update --force

以上是关于想要对准则2 ORM进行删除时不采取任何行动,而对于更新2则ORM中进行更新时不采取行动的主要内容,如果未能解决你的问题,请参考以下文章

Python绘制精美可视化数据分析图表-Matplotlib

对持续触摸采取行动,而不是仅仅在开始 touchesBegan 时采取行动:

如何对日期更改采取行动?

十大交易规则,期货界公认圣经

iOS:在相机预览期间捕获图像而不采取行动

机械结构设计准则--可靠性设计准则