5

2つの小さな質問があります。

actAs: { Timestampable: ~ }

上記のコードで「〜」とはどういう意味ですか?

次に、actAs: { Timestampable: ~ }2つのフィールド(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:     ~

2 番目の質問の目的はTimestampable、行の変更ごとに、フィールドupdated_atに現在の日付が設定されることです。ですから、世話をする必要はありません。

編集:

updated_atフィールドを手動で更新する場合は、次のようにします。

  • 最初に: このフィールドのタイムスタンプ可能な動作を無効にする必要があります (上記の例を参照)
  • 2 番目: 自分で動作を行う必要があります。

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 に答える