LoginSignup
2
2

More than 5 years have passed since last update.

Cakephpでユーザー登録後、登録したユーザーのIDを更新ID、新規登録IDに入れる

Last updated at Posted at 2014-03-07

前提条件

  • ログインしていないユーザーがユーザ新規登録できる
  • ログイン認証にAuthComponentを使用
  • 登録時、ログインユーザのidを各テーブルのcreated_id, modified_idにセットしている

実装

ログインしていない状態でユーザを新規登録した場合、created_id,modified_idにはidがセットされません。
なので、afterSaveメソッドにIDをセットする処理を追加しました。
ログイン時はログインIDが、未ログインは新規登録した際発行されたIDがセットされます。

    function afterSave($created)  
    {  
      if ($created) {
        App::uses('AuthComponent',  'Controller/Component');
        $user = AuthComponent::user();
        if(empty($user)){
            $id = $this->data[$this->alias]["id"];
        }else{
            $id = $user['id'];
        }
        $data[$this->alias]["id"] = $id;
        $data[$this->alias]["created_id"] = $id;       
        $data[$this->alias]["modified_id"] = $id;       
        $this->save($data, array('callbacks' => false));
      }
    }

ポイントは、callbacs => false です。
これがないとbeforeSave(), afterSave()が動いてしまい、余計な処理が走ってしまいます。

2
2
0

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
2
2