【CakePHP】saveALLでinsertしたidのリストを取得する

スポンサード リンク

バージョン:CakePHP 2.2.2

使う場面があるかわかりませんが、、、
saveAllで複数のデータをinsertし、登録したデータのIDを全て取得したい場合について。
モデルの「afterSave」で、「getInsertID」を使用してIDのリストを取得します。

・モデル

class Test extends AppModel {
	public $useTable = 'test';

	public $id_list = array();

	function afterSave($created)
	{
		if($created)
		{
			$this->id_list[] = $this->getInsertID();
		}
		return true;
	}
}

・コントローラー

class Page1Controller extends AppController {

	public $uses = array('Test');

	function beforeFilter(){
		parent::beforeFilter();
	}

	function index(){
		$dataList = array();

		//適当にデータを追加
		$data1 = array();
		$data1['name1'] = 'aaa';
		$data1['name2'] = 'bbb';
		array_push($dataList,$data1);

		$data2 = array();
		$data2['name1'] = 'ccc';
		$data2['name2'] = 'eee';
		array_push($dataList,$data2);

		//IDの取得
		if($this->Test->saveAll($dataList)){
			$id_list = $this->Test->id_list;
			print_r($id_list);
		}
	}
}

↓↓↓追加データが1件だったり、最後のIDだけで良い場合はこちら↓↓↓
【CakePHP】saveでinsertしたidを受け取る

スポンサード リンク


return top