質問

アダプタのご使用をおいてループを実行する約1000倍内んでオブジェクトの作成と保存します。この部の適用がんの移植のデータベースです。共通このようになります:

foreach(...){
    ...
    try{
        $object = new Model_Whatever;
        $object->whatever=$whatever;
        $object->save();}
    catch(Exception $e){
    ...}
}
                    }

この1000のを挿入します。では、何らかの形で、kohana産マーチャーします。分割その10を挿入しますと100のデータセットされています。できればありが何をやってんでいます。

役に立ちましたか?

解決

このKohana ORMをサポートしていないマルチに挿入しますを利用することができ、クエリービルダーとして

$query = DB::insert('tablename', array('column1', 'column2','column3'));
foreach ($data as $d) {
    $query->values($d);
}
try {
    $result = $query->execute();
} catch ( Database_Exception $e ) {   
        echo $e->getMessage();
}
  • 残ってい分ける必要があり、データネットワーク上でない行の検索キーワード1000挿入を行います。
  • $データは配列の配列の値に対応するカラムの順番

コイザヤに#kohana

他のヒント

phpの仕事は非常に遅いとき、インサートマルチアレイの非常に大きな(その方法::値はarray_mergeを持っている)ので、より速くます:

class Database_Query_Builder_Bath_Insert 
    extends Database_Query_Builder_Insert{

    public static function doExecute($table, $data) {
        $insertQuery = DB::insert($table, array_keys(current($data)));

        $insertQuery->_values = $data;

        $insertQuery->execute();
    }
}
call_user_func_array([$query, 'values'], $data);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top