Работает это примерно так:
Код: Выделить всё
foreach($query->each() as $item) {
$item->sold();
$item->save(false);
}
Конечно, можно использовать batchUpdate(Model::updateAll()). Но здесь возникает проблема DRY, поскольку мы больше не можем использовать больше метод $item->sold(), который выглядит так:
Код: Выделить всё
public function sold()
{
$this->changeStatus(self::STATUS_SOLD, time());
$this->whole_cost = $this->product->price;
}
Код: Выделить всё
public function batchSold($itemsId, $wholeCost)
{
return ProductItem::updateAll(['status' => $status, 'whole_cost' => $wholeCost];
}
Вопрос: Можно ли "накопить" update-запросы, не выполняя их фактически, чтобы потом упаковать в batchUpdate и выполнить разом? Если да, то как?