Вывод значения количества из бд

102
09 января 2021, 16:00

Есть таблица shop_order, в этой таблице данные о заказах за исключением количества (поле quantity), количество находится в другой таблице - shop_order_items. Нужно значению total передать количество из соседней таблицы.

    $order_model = new shopOrderModel(); // дефолтная модель
    $order = $order_model->getOrder($order_id);
    $quants_model = new shopOrderItemsModel(); // дефолтная модель с количеством
    $quants = $quants_model->getItems($order_id);  - не работает почему то...
    $vmesteCheck = false;
    foreach($order['items'] as $item) {
        if($item['sku_code'] != $this->plugin->getSettings('skuCodeIdentifier')) {
            $vmesteCheck = false; 
            break;
        }
        $vmesteCheck = true;
    }
    if ($vmesteCheck && $order['state_id']=="paid" || $order['state_id']=="new" || $order['state_id']=="processing") {
        $data = array(
            'order_id' => $order['id'],
            'contact_id' => $order['contact_id'],
            'datetime' =>date('Y-m-d H:i:s'),
            'total' => $quants['quantity'],             //$order['total']
            'status' => "processing",
        );

'total' => $quants['quantity'] - тут раньше выводилась цена. ($order['total']). Сейчас нужно передать количество.

       //Модель shopOrderItemsModel
          public function getItems($order_id, $extend = false)
{
    if (!$extend) {
        return $this->getRawItems($order_id);
    }
    $order = $this->getOrder($order_id);
    $data = array();
    $type = null;
    foreach ($this->getRawItems($order['id']) as $item) {
        if ($item['type'] == 'product') {
            $sku_id = $item['sku_id'];
            $product = &$data[];
            $product = $this->getProductInfo($item['product_id'], $sku_id, $order['id']);
            if (empty($product)) {
                $product = array(
                    'id'       => $item['product_id'],
                    'fake'     => true,
                    'skus'     => array(),
                    'currency' => $order['currency'],
                );
            }
            if (!isset($product['skus'][$sku_id])) {
                unset($product['skus']);
                $product['skus'][$sku_id] = array(
                    'id'   => $sku_id,
                    'fake' => true
                );
            } else {
                $product['skus'][$sku_id]['price'] = $item['price'];
            }
            $product['item'] = $this->formatItem($item);
            if (!empty($product['fake'])) {
                $product['price'] = $product['item']['price'];
            }
            if (!empty($product['skus'][$sku_id]['fake'])) {
                // parse string looks like this "ProductName (SkuName)"
                if (preg_match('!\(([\s\S]+)\)$!', $product['item']['name'], $m)) {
                    // fake means deleted
                    $name_of_fake_sku = $m[1];
                    if ($product['item']['sku_code']) {
                        $name_of_fake_sku .= ' ('.$product['item']['sku_code'].')';
                    }
                } else {
                    $name_of_fake_sku = $product['item']['sku_code'];
                }
                $product['skus'][$sku_id]['name'] = $name_of_fake_sku;
            }
        }
        $service_id = $item['service_id'];
        $service_variant_id = $item['service_variant_id'];
        if ($item['type'] == 'service') {
            if (!isset($product['services'][$service_id]['variants'][$service_variant_id])) {
                $product['services'][$service_id] = array(
                    'id'         => $service_id,
                    'name'       => '',
                    'fake'       => true,
                    'variant_id' => '',
                    'variants'   => array(),
                    'currency'   => $order['currency'],
                );
            }
            $product['services'][$service_id]['item'] = $this->formatItem($item);
            if (!empty($product['services'][$service_id]['fake'])) {
                $product['services'][$service_id]['price'] = $product['services'][$service_id]['item']['price'];
            }
        }
        if (empty($product['fake'])) {
            $this->workupProduct($product, $order);
        }
    }
    return $data;
}

'total' => $order['quantity'], - запись была бы такая, если бы количество (quantity) было в таблице shop_order

READ ALSO
Как подключить API на локальном сервере?

Как подключить API на локальном сервере?

У меня есть форма регистрации, получается клиент наполняет эту форму, и в конце калькулятор вычитывает сумму которую клиент должен оплатить,...

115
Как из одной таблицы передать значение в другую таблицу

Как из одной таблицы передать значение в другую таблицу

Подскажите пожалуйста, нужно из таблицы shop_order_items передать в таблицу shop_vmeste_order значение поля quantityПередать его нужно в поле total

122
Как объединить два скрипта в один

Как объединить два скрипта в один

Дано два скрипта к которым обращается javascript код клиента:

105
Подгрузка постов ajax

Подгрузка постов ajax

Есть блоки, которые генерируются foreach по WP_QueryОграничил вывод до штук

127