如何在Symfony实体类中设置某些字段的值



我有像这样的symfony的实体类

/**
 * @var datetime $createDate
 * @ORMColumn(name="create_date", type="datetime", nullable=false)
 *
 */
private $createDate;
/**
 * @return datetime
 */
public function getCreateDate(){
    return $this->createDate;
}
public function setCreateDate(DateTime $createDate){
    $this->createDate=new DateTime('today');
    return $this;
}

基本上我想将日期设置为今天的日期。

我正在使用json,该json被串行的对象,然后我应该对其进行化。

但是这个日期对象不在该序列化中,我想在持续 entity

时将其设置

这是简单的情况,但我想对日期进行一些计算,然后保存。

有不同的方法。最简单的是设置构造函数中的创建物:

public function __construct()
{
  $this->createDate = new DateTime();
}

第二个是 - 就像已经描述的亚历山大一样 - 使用生命周期回调方法:

/**
 * @ORMEntity()
 * @ORMHasLifecycleCallbacks()
 */
class yourEntityClass
{
  // ...
  /**
   * @ORMPrePersist
   */
  public function prePersist()
  {
    $this->createDate = new DateTime();
  }
}

第三个是使用学说扩展束,为此带有注释:

/**
 * @var datetime $createDate
 * @ORMColumn(name="create_date", type="datetime", nullable=false)
 * @GedmoTimestampable(on="create")
 */
private $createDate;

这尤其有意义,如果您还想使用此捆绑包随附的其他行为,例如可缓慢的行为或可翻译的行为。

/**
 * @PrePersist
 */
function onPrePersist() {
    // set default date
    $this->createDate= date('today');
}

更新实体时可能存在E问题,但是您可以添加简单的检查以查看是否已经设置了日期。

相关内容

  • 没有找到相关文章