2016-04-13 18 views
1

Yemek tarifleri ve malzemelerle ilgili bir yazı hazırladım ancak yayınım yeterince açık değildi, bu yüzden bu konuda daha net olmaya çalışıyorum.CakePHP 3/MySQL ile yemek tariflerini ve malzemeyi kullanın

PRODUCTS (id, code, name) 
RECIPES (product_id, ingredient_id, qty) 

product_id ve ingredient_id masa ÜRÜNLERİ her iki id en şunlardır:

İki SQL tablo var. Bir "nihai" ürün, alt ürünlerle birleştirilebilir.

Bir görünümde, ağaç görünümünde bir tarif yapmak için gereken tüm tarifleri görüntülemek istiyorum.

Product A - 10 
--> Product A1 - 50 (5*10) 
--> Product A2 - 90 (9*10) 
------> Product A21 - 180 (2*(9*10)) 
------> Product A22 - 270 (3*(9*10)) 
--> Product A3 - 110 (11*10) 

:

PRODUCTS (id is auto_increment) 

    code |  name  | 
________|________________| 
    A | Product A  | 
    A1 | Product A1 | 
    A2 | Product A2 | 
    A21 | Product A21 |  
    A22 | Product A22 | 
    A3 | Product A3 | 

      RECIPES 

    product_id | ingredient_id | qty | 
_____________|_______________|_____| 
     A  |  A1  | 5 | 
     A  |  A2  | 9 | 
     A  |  A3  | 11 | 
     A2  |  A21  | 2 | 
     A2  |  A22  | 3 | 

Örneğin, ben bu görüntüler istiyorum, 10 Ürünler A yapmak:

Ben bir örnek yapacak

, bunun için, biz böyle bir veritabanı özü olabilir Sadece bir bileşen listesi (A1, A2, A3) görüntüleyebilirim ancak ürün A2 için A21 ve A22 gibi tüm alt tarifleri görüntüleyemiyorum.

$ingredients[] = [$codeProduct=> $this->Recipes->getListOfIngredients($codeProduct)]; 

getListOfIngredients işlevi: o kod ile

public function getListOfIngredients($code = null){ 
     if ($code <> null){ 
      $ingredients = $recipes->find('all', ['conditions' => ['Recipes.product_id = ' => $code]]); 
      return $ingredients->toArray(); 
     } 
    } 

, $ingredients[] bir ürün için tüm malzemeleri içerir, ancak nasıl tüm alt ekleyebilir

benim denetleyicisi yapıyorum -çörek mi?

Yardımlarınız için teşekkür ederiz.

+0

Bize biraz kod göstermeliydiniz ya da bu soru downvotes ve kapalı olacak – RiggsFolly

+0

@RiggsFolly Mesajımı düzenledim. – BlackAlpha

cevap

1

Aşağıdaki sorguyu kullanarak Product A için tüm kayıtları alacaksınız. Ağaç yapısını üretmek için bu diziyi döndürmeniz gerekir.

+0

SELECT'inin bir örneğini eklemek için bir tür "COUNT()" (örnekte) r.product_id = 'A' alt tarifleri olup olmadığını öğrenmek mümkün mü? – BlackAlpha