如何定义默认值学说实体?

时间:2014-07-21 16:01:07

标签: php mysql doctrine-orm

我有两个表:plansmarks

对于这两个表

<?php
/**
 * @Entity
 * @Table(name="marks")
 */
class Mark{

    /**
     * @ManyToOne(targetEntity="Plan", inversedBy="marks")
     * @JoinColumn(name="plan_id", referencedColumnName="id")
      **/
    protected $plan = null;
    ...
}

并且

<?php
/**
 * @Entity
 * @Table(name="plans")
 */
class Plan{

     /**
     * @OneToMany(targetEntity="Mark", mappedBy="plan")
     */
     private $marks;
     ...
}

正如您从表marks中的代码中可以理解的那样,我有字段plan_id(存储计划ID)。此字段不是必填字段,我默认需要plan_id = 0,但我可以这样做。如果我在类$plan = 0中设置字段Mark,则会出现预期对象的错误。但如果我设置plan = 0,它会将NULL保存在数据库中,我根本不需要它。

也许有人有一些建议?

1 个答案:

答案 0 :(得分:0)

在Mark-&gt; setPlan()

上使用lifecycle callbacks
/**
 * @Entity
 * @Table(name="marks")
 * @ORM\HasLifecycleCallbacks
 */
class Mark{

    /**
     * @ManyToOne(targetEntity="Plan", inversedBy="marks")
     * @JoinColumn(name="plan_id", referencedColumnName="id")
     **/
    protected $plan = null;

   /**
    * @ORM\PrePersist
    * @ORM\PreUpdate
    */    
   public function setPlan(Plan $plan = null){
      if(is_null($var)){
        $this->plan = 0;
      }
   }

但我认为Doctrine会在尝试找到id = 0的计划时返回错误。