CakePHP envanter sayımı

2 Cevap php

Biz bir envanter izleme sistemi geliştiriyoruz. Temelde biz emir yerleştirildiği bir order tablo var. Bir sipariş ödenir zaman, 0 den durum değişiklikleri 1. Bu tablo başka bir tabloda birden fazla çocuğu var order_items.

Bu ana yapıdır.

CREATE TABLE order(
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    user_id INT UNSIGNED,
    status INT(1),
    total INT UNSIGNED
);
CREATE TABLE order_items(
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    order_id INT UNSIGNED,
    article_id INT UNSIGNED,
    size enum('s', 'm', 'l', 'xl'),
    quantity INT UNSIGNED
);

Şimdi, biz satın almalar için benzer mimarisi ile bir stocks tablo var. Bu yapıdır.

CREATE TABLE stock(
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    article_id INT UNSIGNED
);
CREATE TABLE stock_items(
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    stock_id INT UNSIGNED,
    size enum('s', 'm', 'l', 'xl'),
    quantity INT(2)
);

Ana fark stocks no status alanı olmasıdır. What we are looking for is a way to sum each article size from stock_items, sonra da order_items burada Order.status = 1 her makale boyutunu özetlemek ve bizim mevcut envanter bulmak için bu öğeleri hem çıkartmak.

Bu, tek bir sorgudan almak istiyorum tablo:

Size     | Stocks   | Sales    | Available
  s      |     10   |      3   |       7  
  m      |     15   |     13   |       2  
  l      |      7   |      4   |       3  

Başlangıçta biz complex find conditions kullanarak abouth düşündüm, ama belki de yanlış bir yaklaşımdır.

Bu doğrudan katılmak değil beri Ayrıca, oldukça zor olduğu ortaya çıkıyor.

Bu, biz her öğe için hisse senedi toplam almak zorunda koddur.

function stocks_total($id){
    $find = $this->StockItem->find('all', array(
        'conditions' => array(
            'StockItem.stock_id' => $this->find('list', array('conditions' => array('Stock.article_id' => $id)))
        ),
        'fields' => array_merge(
            array(
                'SUM(StockItem.cantidad) as total'
            ),
            array_keys($this->StockItem->_schema)
        ),
        'group' => 'StockItem.size',
        'order' => 'FIELD(StockItem.size, \'s\', \'m\' ,\'l\' ,\'xl\') ASC'
    ));
    return $find;
}

Teşekkürler.

2 Cevap

Aslında, ben bu mümkün değil bence. Ne yapıyor sona erdi iki tablo sorgulama ve ardından PHP ile hesaplamalar yapmak oldu.

Gibi daha karmaşık, çok aşamalı bir sorun ile karşı karşıya muhtemelen geçici bir tablo kullanarak denemek istiyorum.

Yani:

Stock_items gelen değer setleri ile geçici bir tablo oluşturun ve sonra ORDER_ITEMS ile bağlantı mantığına dayalı bu tabloyu güncelleyin.