我创建了一个实体,如下所示:
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上的Update和On Delete上都没有ACTION。有没有办法做到这一点,还是没有学说2支持?
答案 0 :(得分:2)
根据Doctrine-ORM文档的文档,@JoinColumn的属性为:
所以,你在这里使用的属性onDelete =" NO ACTION"应该在这里工作。但是对于更新',没有定义这样的属性。默认情况下,MySQL的(onUpdate)属性将使用"限制"这是" No Action"的同义词。正如here所述。
根据我的信息,onUpdate
属性已从Doctrine 2中移除。我不知道背后的实际原因。但是,如果你不使用onUpdate并获得更新=限制'那么它就没问题了。默认情况下,而不是' ON UPDATE = No Action'在你的问题中你需要的。
答案 1 :(得分:0)
/**
* @ORM\ManyToOne(targetEntity="User")
* @ORM\JoinColumn(name="created_by", referencedColumnName="iduser",onDelete="NO ACTION")
**/
然后您需要执行命令
>php bin/console doctrine:schema:update --force