2015-06-29 2 views
0

У меня есть набор строк от 10 до 200, которые мне нужно вставить в базу данных. Active Records медленно для выполнения этой задачи, я использую команду строитель таким путем:Как вставить несколько строк?

 $builder = Yii::app()->db->schema->commandBuilder; 
     $command=$builder->createMultipleInsertCommand('AviaOrders',$ordersInfoToSave); 
     $command=$builder->createMultipleInsertCommand('ItineraryInfo',$itineraryInfoToSave); 
     $command->execute(); 

Где $ordersInfoToSave и $itineraryInfoToSave массивы атрибутов со следующими структуры.

array(array(name=>value,...),array(name=>value,...),...) 

Поскольку я использую Yii-1.1.3, у меня есть метод не CommandBuilder в createMultipleInsertCommand.

Итак, как вставить несколько строк, используя ActiveRecords, а также CommandBuilder?

ответ

1

Вы можете создать строку MySql команды вставки как

$ordersInfoToSave=''; 

foreach ($records as $record) 
$ordersInfoSave.="('{$record['attribute1vlaue']}','{$record['attribute2vlaue']}'),"; 

if($ordersInfoSave !== NULL){ 
$ordersInfoSave=substr($ordersInfoSave,0,-1); 
$query='Insert Into AviaOrders (`attribute1`,`attribute2`) values '.$ordersInfoSave; 


Yii::app()->db->createCommand($query)->execute(); 

}