想要对准则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