LoginSignup
8
12

More than 5 years have passed since last update.

【CakePHP】作成者・更新者を自動的に保存する

Last updated at Posted at 2015-01-24

作成日・更新日と同じように作成者・更新者も自動的に保存されると便利だと思う。
※insert時には作成者・更新者。update時には更新者のみ。

※今までsaveごとに作成者・更新者を設定していたが、beforeSaveにまとめれば楽なのではと考えた。
※他の方はどのようにしているか良かったら教えてほしい。

前提として、Authコンポーネントを使い作成者・更新者にはUserテーブルのidが入る構成になっている。

1.ログインIDを取得して、logined_user_idへ格納。

AppController
public function beforeFilter($options=[]) {
  Configure::write('logged_user_id', $this->Auth->user('id'));
}

2.beforeSave()で保存前にinsertなら作成者へ、updateなら更新者へログインIDを設定している。

public function beforeSave() {
  if(empty($this->id)){
      $this->data[$this->alias]['created_user'] = Configure::read('logged_user_id');
  }
  $this->data[$this->alias]['modified_user'] = Configure::read('logged_user_id');

  return true;
}

参考:beforeSaveを使おう

8
12
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
12