2

それで、テーブルに挿入する必要がある一連のデータを取得しました。現在、for ループを使用して各エントリを反復処理し、モデルを 1 つずつ保存しています。しかし、それは良い方法ではないようです。さらに、トランザクションを使用すると問題が発生します。パフォーマンスを向上させ、トランザクションを使用できるようにするためのより良い方法は何ですか。現在使用しているコードは次のとおりです。

foreach ($sheetData as $data)
    {
        $newRecord = new Main;
        $newRecord->id = $data['A'];
        $newRecord->name = $data['B'];
        $newRecord->unit = $data['C'];
        $newRecord->save();
    }
4

1 に答える 1

1

検証をスキップできる場合は、単純な sql 挿入を生成して一度実行できます。お気に入り:

$count = 0;
$sql = '';
foreach ($sheetData as $data)
{
    if(!$count)
       $sql .= 'INSERT INTO tbl_main (id ,name ,unit) Values ('.$data['A'].','$data['B']','$data['C']') ';
    else
       $sql .= ' , ('.$data['A'].','$data['B']','$data['C']')';
    $count++;
}

Yii::app()->db->createCommand($sql)->execute();
于 2013-09-29T09:20:43.987 に答える