symfony:actAs:{Timestampable:〜}

sat*_*y78 5 doctrine symfony1 behavior symfony-1.4 doctrine-1.2

我有两个小问题:

actAs: { Timestampable: ~ }
Run Code Online (Sandbox Code Playgroud)

什么"〜"在上面的代码中意味着什么?

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

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

j0k*_*j0k 14

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

从doc,这里有一些配置:

Timestampable:
  created:
    name: created_at
    type: timestamp
    format: Y-m-d H:i:s
  updated:
    disabled: true
Run Code Online (Sandbox Code Playgroud)

你也会在默认情况下找到这个"〜"(很多)generator.yml.这样,生成器,甚至是空的,将生成一个很好的管理员:

config:
  actions: ~
  fields:  ~
  list:    ~
  filter:  ~
  form:    ~
  edit:    ~
  new:     ~
Run Code Online (Sandbox Code Playgroud)

对于您的第二个问题,该目标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());
    }
  }
Run Code Online (Sandbox Code Playgroud)

  • 为了澄清,〜是YAML为null. (3认同)