[РЕШЕНО] Копирование объектов
Приветствую, наверное мой вопрос глупый, но как в modx скопировать объект? Задача такая, есть список товаров minishop2, при получении заказом определенного статуса мне нужно все товары данного заказа сохранять в другую таблицу, т.е. создавать другой объект. Я сделал так
if($data['order_status'] == 5){
$products = $modx->getCollection('msOrderProduct', array('order_id' => $data['order_id']));
foreach($products as $product){
$history = $modx->newObject('EstimateHistory');
$history->fromArray(array(
'order_id' => $product->get('order_id'),
'product_id' => $product->get('product_id'),
'name' => $product->get('name'),
'count' => $product->get('count'),
'price' => $product->get('price'),
'weight' => $product->get('weight'),
'cost' => $product->get('cost'),
'options' => json_encode($product->get('options')),
));
$history->save();
}
}
Но мне кажется есть вариант покороче. Кто подскажет?
Поблагодарить автора
Отправить деньги
Комментарии: 3
Ну если принципиально именно объекты копировать, то сойдёт. Долго и дорого, но товаров же в заказе немного.
Если нет, то лучше использовать INSERT SELECT. Данное решение на несколько порядков быстрее! Всего один запрос к БД и никакой инициализации кучи объектов.
Ещё важно не забывать для таких операций использовать транзакции. Документация в помощь.
Если нет, то лучше использовать INSERT SELECT. Данное решение на несколько порядков быстрее! Всего один запрос к БД и никакой инициализации кучи объектов.
Ещё важно не забывать для таких операций использовать транзакции. Документация в помощь.
Наряду с методом fromArray есть еще toArray, что несколько сократит код.
Спасибо всем за ответы, очень помогли.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.