andWhere(['id_inventory' => $inventory->id_inventory])->all(); /** @var /common/models/InventoryItem $item */ foreach ($items as $item ){ $prev = $item->inventoryItemPrev; if ( !isset($prev)){ continue; } $start = $prev->created_at; $end = $item->created_at; $query = new Query(); $query->select([ new Expression(" coalesce( sum( transfer.count ),0)") ]); $query->from('transfer'); $query->innerJoin('sale','sale.id_sale = transfer.id_object'); $query->innerJoin('product','sale.id_product = product.id_product'); $query->andWhere(['transfer.type' => Transfer::TYPE_PRODUCT]); $query->andWhere(['in', 'transfer.status', [Transfer::STATUS_NOT_PAID, Transfer::STATUS_PAID]]); $query->andWhere(['product.id_product' => $prev->id_product]); $query->andWhere([ '>','transfer.created_at',$start ]); $query->andWhere([ '<','transfer.created_at',$end ]); $products = $query->scalar(); $item->count_sold = $products; echo $item->price_brutto . " - ". $item->productName ."\n"; $item->save(); } } }