2012-03-19 8 views
6

saveAll()を使用してCakePHPに複数のレコードを保存すると、テーブルに正常に保存できます。しかし、問題は、保存された行のIDを取得する際に発生します。 LastInsertID()は最後のIDを1つだけ返します。 saveAll()を使用して、最後に挿入したすべてのIDを挿入するにはどうすればよいですか?あなたができるようCakePHPのsaveAll()からの挿入IDの取得

答えて

23

afterSave機能は、SAVEALLの実行中に保存個々の後に呼び出されます:あなたのAppModelで


class AppModel extends Model { 
    var $inserted_ids = array(); 

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

あなたが任意のモデルにこのコードを配置することができますし、それが正常に動作する必要があります。このように、あなたのコントローラにSAVEALL後にIDを返すために、あなたはそうするでしょう:


if($this->Post->saveAll($posts)) { 
    $post_ids=$this->Post->inserted_ids; //contains insert_ids 
} 

はそれが

+0

ありがとうのSudhirを役に立てば幸い、私はこれを試してみましたが、そのエラーを投げ 未定義のプロパティ:のAppModel:inserted_ids私のコントローラの 、理由は何でしょうか? – Vineet

+0

@vin.it前にvarを削除する$ inseted_ids – Ehtesham

+0

@ehtesham:thanx ehtesham.iはそれを試しましたが、それでも同じエラーを投げます。他の可能性は..? – Vineet

関連する問題