Size: a a a

2021 March 17

AK

Anton K. in symfony
Chiki Briki
а зачем убирать из uow, не подскажешь?
чтобы он их еще раз не заинсертил
источник

CB

Chiki Briki in symfony
Anton K.
чтобы он их еще раз не заинсертил
насколько я понимаю если persist не делается, то она их не должна заинсертить ни в каком случае
ну т.е. если только если дев где-то не решит еще раз их вставить, или я что-то упускаю?)
источник

AK

Anton K. in symfony
Chiki Briki
насколько я понимаю если persist не делается, то она их не должна заинсертить ни в каком случае
ну т.е. если только если дев где-то не решит еще раз их вставить, или я что-то упускаю?)
вроде как да, но если ты не сделаешь $em->persist(), то когда ты планируешь делать insert?
источник

AK

Anton K. in symfony
плюс еще entity могут попасть в очередь на insert, если есть cascade у related entities. тож надо учитывать
источник

AK

Anton K. in symfony
по-хорошему это бы делать в рамках всей transaction доктриновской?
источник

CB

Chiki Briki in symfony
Anton K.
по-хорошему это бы делать в рамках всей transaction доктриновской?
на счет транзакций - да
на счет $em - если вставлять multi rows, то только напрямую через DBAL, насколько я понимаю
источник

AK

Anton K. in symfony
моя идея была в том, чтобы с доктриной работать так же, как раньше

$em->persist($entity1);
$em->persist($entity2);
$em->flush();

потом на doctrine events собрать все $entity, которые можно заинсертить пачкой, выполнить запрос и каким-то образом запретить доктрине еще раз сделать insert для этих сущностей
источник

ES

Evgeny Savich in symfony
нормальный план, только ещё флаш после каждого персиста добавить бы, для уверенности
источник

AK

Anton K. in symfony
Evgeny Savich
нормальный план, только ещё флаш после каждого персиста добавить бы, для уверенности
для чего? или это сарказм?
источник

AK

Anton K. in symfony
но ваще да, если сущностей не так много, то выигрыш от батчинга в insert врядли будет заметен
источник

CB

Chiki Briki in symfony
Anton K.
но ваще да, если сущностей не так много, то выигрыш от батчинга в insert врядли будет заметен
$em->persist($entity1);
$em->persist($entity2);
$em->flush();

Это не сделает multi insert, насколько я помню

Идея делать как-то так

$collection = new Doctrine_Collection('tablename');
$collection->add($record1);
$collection->add($record2);
$collection->save();

Или писать свой запрос в стиле
$connection->executeUpdate(
       'INSERT INTO `wp_postmeta` (`post_id`, `meta_key`, `meta_value`)  VALUES ' . implode(', ', $placeholders) . ' ON DUPLICATE KEY UPDATE `meta_value` = VALUES(`meta_value`)',
       $values,
       $types
   );

Я на сифе оч давно не прогал и в некоторых вещах плаваю. В ларе можно просто сделать Entity::insert() и передать туда массив строк, оно их без проблем вставит)
источник

AK

Anton K. in symfony
Chiki Briki
$em->persist($entity1);
$em->persist($entity2);
$em->flush();

Это не сделает multi insert, насколько я помню

Идея делать как-то так

$collection = new Doctrine_Collection('tablename');
$collection->add($record1);
$collection->add($record2);
$collection->save();

Или писать свой запрос в стиле
$connection->executeUpdate(
       'INSERT INTO `wp_postmeta` (`post_id`, `meta_key`, `meta_value`)  VALUES ' . implode(', ', $placeholders) . ' ON DUPLICATE KEY UPDATE `meta_value` = VALUES(`meta_value`)',
       $values,
       $types
   );

Я на сифе оч давно не прогал и в некоторых вещах плаваю. В ларе можно просто сделать Entity::insert() и передать туда массив строк, оно их без проблем вставит)
по-умолчанию не сделает конечно. я же говорю о том, что можно прозрачно сделать multiinsert не меняя API и не городя свои обертки
источник

CB

Chiki Briki in symfony
источник

VK

Vladyslav Kopaihorod... in symfony
Чувак, сделай просто с батчами доктрині, если что, то там есть nested transactions
источник

VK

Vladyslav Kopaihorod... in symfony
Будет медленно - пофиксишь
источник

VK

Vladyslav Kopaihorod... in symfony
Em->getReference() , em-> clear() и погнал)
источник

AK

Anton K. in symfony
а нафиг ваще в синхре доктрина
источник

CB

Chiki Briki in symfony
Anton K.
а нафиг ваще в синхре доктрина
ну Eloquent и SQLAlchemy поддерживают вставку multi rows)
источник

ПГ

Павел Г. in symfony
Chiki Briki
ну Eloquent и SQLAlchemy поддерживают вставку multi rows)
У Элоки нет identityMap. Да и в целом там идеология другая :)
Вообще, если попытаться упопроться именно в эту задачу, можно попробовать заменить connection  и там отловить запросы все.
источник

AK

Anton K. in symfony
эх так и не научился я дружить с active record
источник