2013-04-20 2 views
2

Есть ли способ, я могу вставить несколько ассоциативных массивов в таблицу базы данных с поддержкой встроенного SQL-запроса doctrine? В настоящее время я вижу, что нужно вставить только один ряд/ассоциативный массив. код:Вставить Несколько ассоциативных массивов в одной встроенной команде insert() doctrine

$connection = $em->getConnection(); 
$connection->insert('un_table_name', $associative_data_array); 

Моя цель состоит в том, чтобы вставить Mutiple строку в одном операторе, так что они вставлены в одной транзакции.

Чтобы уточнить, я работаю над задачей миграции, когда данные будут обрабатываться и передаваться от старой схемы к новой схеме. но поскольку сущности находятся только в новой структуре схемы, я могу подключить оба db к стилю ORM. Вот почему я следую за поддержкой собственных запросов. также, поскольку массовые данные будут переданы, я думаю, что множественная вставка в одной транзакции сделает процесс быстрее.

Любые предложения/решения оценены. Благодарю.

ответ

3

Вы можете использовать подключение # транзакционные ($ Func):

$connection = $em->getConnection(); 
$connection->transactional (function ($connection) { 
    $connection->insert('un_table_name', $associative_data_array1); 
    $connection->insert('un_table_name', $associative_data_array2); 
    ... 
    $connection->insert('un_table_name', $associative_data_arrayN); 
}); 
+0

Спасибо, его полезным. – Rana

+0

Ты спас мой вечер, сэр! thx :) Но у меня вопрос, я получаю ошибку $ associative_data_array1 не определен. Нужно ли использовать глобальную переменную перед переменной или есть ли другой способ передачи $ associative_data_array1 в транзакцию $ connection->? – EnchanterIO

+0

Вы должны использовать функцию с ключевым словом «use», как показано в документах: http://php.net/manual/en/functions.anonymous.php – akond

Смежные вопросы