5

我有两个小问题:

actAs: { Timestampable: ~ }

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

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

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

4

1 回答 1

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());
    }
  }
于 2012-04-26T19:14:26.967 回答