symfony:actAs:{Timestampable:〜}

时间:2012-04-26 18:37:46

标签: symfony1 doctrine symfony-1.4 behavior doctrine-1.2

我有两个小问题:

actAs: { Timestampable: ~ }

上面的代码中“〜”是什么意思?

然后,我看到actAs: { Timestampable: ~ }的表有两个字段(created_at和updated_at)。

是否可以将updated_at字段绑定到特定字段(我更新此字段,然后updated_at获取新值)?

1 个答案:

答案 0 :(得分:14)

“〜”表示您将使用默认值或默认配置。在您的情况下,行为Timestampable将使用默认值和配置。所以你不必重新定义它们。

从文档中,这里有一些配置:

Timestampable:
  created:
    name: created_at
    type: timestamp
    format: Y-m-d H:i:s
  updated:
    disabled: true

您还可以在默认generator.yml中找到这个“〜”(很多)。这样,生成器,即使是空的,也会产生一个很好的管理员:

config:
  actions: ~
  fields:  ~
  list:    ~
  filter:  ~
  form:    ~
  edit:    ~
  new:     ~

对于第二个问题,Timestampable的目标是针对某行的每次修改,字段updated_at将使用当前日期进行设置。所以你不需要照顾它。

修改

如果您想手动更新updated_at字段:

  • 首先:您必须禁用此字段的时间戳行为(请参阅上面的示例
  • 第二:你必须自己做这个行为。

最简单的方法是扩展模型的preSave功能并在此处完成工作。像:

class Article extends BaseArticle
{
  public function preSave($event)
  {
    if(array_key_exists("your_field", $this->getModified())
    {
      $this->setUpdatedAt(time());
    }
  }