LoginSignup
22
22

More than 5 years have passed since last update.

cakephp3 2つテーブルのデータをトランザクションで保存

Posted at
MembersController.php
use Cake\Datasource\ConnectionManager; 
MembersController.php
// トランザクション
$connection = ConnectionManager::get('default');
$connection->begin();
try{
    // データを保存
    if( !($member_result = $this->Members->save($member)) ){ // member更新
        throw new Exception(Configure::read("M.ERROR.INVALID"));
    }

    // 今登録したmember_idを設定 TODO 本当はentityでidも篩いにかけた方がいいかも
    $agreement['member_id'] = $member_result['id'];

    if(!$this->Agreements->save($agreement)){ //agreementの更新
        throw new Exception(Configure::read("M.ERROR.INVALID"));
    }
    $this->Members->connection()->commit();
} catch(Exception $e){

    $this->Flash->error($e);
    $connection->rollback(); //ロールバック
}

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