我创建了如下实体:
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不支持?
根据Doctrine-ORM文档的文档,@JoinColumn的属性是:
因此,您在此处onDelete =“ NO ACTION”使用的属性应在此处使用。但是对于“更新时”,没有定义这样的属性。默认情况下,MySQL的(onUpdate)属性将使用“ Restrict”,这是[No Action]的同义词,如here所述。
根据我的信息,onUpdate
属性已从教义2中删除。我不知道其背后的实际原因。但是,如果您不使用onUpdate并默认得到“ ON UPDATE = Restrict”,而不是您在问题中需要的“ ON UPDATE = No Action”,那就很好。
/**
* @ORM\ManyToOne(targetEntity="User")
* @ORM\JoinColumn(name="created_by", referencedColumnName="iduser",onDelete="NO ACTION")
**/
然后您需要执行命令
>php bin/console doctrine:schema:update --force