Требуется создать payment и его items (оплаченные заказы). Создать по отдельности не сложно, а как создать в транзакции - не знаю.
Пример кода:
$payment = $this->paymentFactory->create();
$payment->setCustomerId($order->getCustomerId());
$payment->setAmount($amount);
$payment->save();
$paymentOrder = $this->orderConvertor->toPaymentOrder($order);
$paymentOrder->setAmount($amount);
$paymentOrder->setPaymentId($payment->getId()); // <- проблема в этом
$paymentOrder->save();
Класс транзакции позволяет добавлять и сохранять элементы:
$transaction = $this->transactionFactory->create();
$transaction->addObject($payment);
$transaction->save();
Знаю как добавить items в payment и все это в транзакцию, но не ясно
как задать payment_id для item в "середине транзакции".
Есть идея добавить метод afterSave и проходить по коллекции и каждому item назначать этот payment_id. Для Payment уже добавил коллекцию для этого.
Вообще, хотелось бы сделать как это делается в самой мадженте, уверен что это уже решено, но не знаю в каком месте подсмотреть.