【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を受け取る