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

2019年7月29日

バージョン: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を受け取る

スポンサーリンク