【CakePHP】saveallで新規登録と更新処理を同時に行う

2019年7月29日

バージョン:CakePHP 2.x

saveallはid列のデータがあるかどうかで、新規登録か更新処理が決まります。

したがって、下記のようなArrayを作ると、
新規登録と更新処理を同時に行うことができます。

「Users」というテーブルに ID=1 のデータがある前提で、
新規登録と更新処理を行う場合は下記のようなArrayリストを作ります。

Array
(
    [0] => Array
        (
            [User] => Array
                (
                    [id] => 1
                    [name] => test
                )
        )
    [1] => Array
        (
            [User] => Array
                (
                    [name] => test1
                )
        )
)

簡単なコントローラーの例は下記になります。

<?php
class UsersController extends AppController {
	function beforeFilter(){
		parent::beforeFilter();
	}
	public function index() {
		$data = array();
		$user1 = array();
		$user1['User']['id']= 1;
		$user1['User']['name']	= "test1";
		array_push($data,$user1);
		$user2 = array();
		$user2['User']['name']	= "test2";
		array_push($data,$user2);
		$this->User->saveall($data);
	}
}

参考:公式サイト(データを保存する)

スポンサーリンク