У меня есть Product
, «Заказ» OrderDetail
таблиц. OrderDetail
есть записи на покупку и продажу.
Как и OrderDetail
, иметь order_quantity, delivery_quantity, тип (купить / продать), под рукой (# количество количества в наличии), черновик (заказ черновой или размещен или выполнен).
Итак, я хочу создать функцию, в которой я мог бы передавать идентификаторы продукта ($pids= [1,2,3 .. so on ];
) с датой, звучащей как getDetails($pids, $start_date, $end_date);
Здесь я хочу avg of on-hand, sum of order_quantity , sum of delivered_quantity ,
sorts ( sum of order_quantity - sum of delivered_quantity )
, total sold or buy (type 1 and 2)
.
Сейчас я делаю это в foreach loop
, но это занимает много времени загрузки.
неверный результат при использовании hasMany
как, например, я использую этот код в цикле, но я не хочу использовать цикл.
$data1 = $this->OrderDetail->find('all',[ 'recursive'=>1,'fields' => ['AVG(OrderDetail.on_hand) AS avg_on_hold'],
'conditions'=>[ 'OrderDetail.type'=>[1,2],'OrderDetail.status'=>[0,1],
'OrderDetail.product_id'=>$pid, 'DATE(OrderDetail.created) BETWEEN ? AND ?' => [$st, $end] ] ]);
$data2 = $this->OrderDetail->find('all',[ 'recursive'=>1,'fields' => [ 'sum(OrderDetail.order_qty) AS order_qty', 'sum(OrderDetail.delivered_qty) AS delivered_qty' ],
'conditions'=>[ 'Order.type'=>2,'Order.status'=>3, 'OrderDetail.product_id'=>$pid,
'DATE(Order.delivery_date) BETWEEN ? AND ?' => [$st, $end] ] ]);