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

スポンサード リンク

バージョン: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);
	}
}

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

スポンサード リンク


return top