在doctrine 2 ORM上更新时不需要删除操作,也不需要操作

时间:2014-08-22 04:52:47

标签: zend-framework orm doctrine-orm zend-framework2 doctrine

我创建了一个实体,如下所示:

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支持?

2 个答案:

答案 0 :(得分:2)

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

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

所以,你在这里使用的属性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