@v7sila

Как создать несколько записей в таблице с помощью doctrine одним запросом?

В sql для добавление нескольких записей одним запросом можно сделать так:
insert into tablename (id,blabla) values(1,'werwer'),(2,'wqewqe'),(3,'qwewe');


В моём случае я сделал так:
public function addImages($idService, $newFilePath, $userId){
        // Подключение менеджера сущьностей Doctrine
        $em = $this->managerInterface;
        // Запись изображений в таблицу в таблицу
        foreach ($newFilePath as $key=>$value){
            // Создание экземпляра сущьности
            $images = new ServiceImages();

            $images->setIdService($idService);
            $images->setPathImages($value['PATH']);
            $images->setNameImages($value['NAME']);
            $images->setIdUser($userId);
            $em->persist($images);
            // Запись
        }
        
	   $em->flush();

    }


Но это слишком много запросов к базе. Как оптимизировать?
  • Вопрос задан
  • 882 просмотра
Решения вопроса 2
Stalker_RED
@Stalker_RED
Никак.

Можно конечно написать "сырой" sql запрос в обход doctrine, или даже сделать LOAD DATA INFILE если данных действительно много. Но это уже фичи, которые по разному реализованы в разных СУБД и доктрина таким не занимается.
Ответ написан
Комментировать
artemylapko
@artemylapko
Symfony, Doctrine developer. Немного js и python.
Это не слишком много запросов к базе. Это то, как надо работать с базой.

insert into tablename (id,blabla) values(1,'werwer'),(2,'wqewqe'),(3,'qwewe');

Такой код не нужен. Если таких данных будет много вы просто по памяти вылетите.

У вас $em->flush(); за циклом, все верно!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы