2016-09-13 2 views
0

ich eine Abfrage wiecakephp wie die Wiederholungs Spalten in Abfrageergebnis zu vermeiden

$p = $this->Products->findById($id) 
       ->select(['name', 'description', 'category_id', 's.name', 'pp.price']) 
       ->join([ 
       'table' => 'sizes', 
       'alias' => 's', 
       'type' => 'INNER', 
       'conditions' => 's.category_id = Products.category_id', 
      ]) 
      ->join([ 
       'table' => 'products_prices', 
       'alias' => 'pp', 
       'type' => 'LEFT', 
       'conditions' => 'pp.size_id = s.id AND pp.product_id = Products.id', 
      ]); 

Das Problem haben, wenn das Produkt 10 verschiedenen Größen hat, 10 Reihen mit sich wiederholenden Namen, die Beschreibung hergestellt werden, category_id Elemente

Gibt es eine Möglichkeit, es neu zu schreiben, so dass der Name und die Preise der Größe als Array als Sub-Array geliefert werden?

Antwort

0

Vielleicht nur Containable statt Join verwenden? Sie können find() auf Ihren Produkten und contain Größen und Produktpreise ausführen. Dadurch erhalten Sie das Array/Sub-Array, nach dem Sie suchen.

Die einzige Nachteil ist, dass es immer noch Produkte ziehen würde, auch wenn sie keine passende Größe haben.

Es ist schwer zu sagen, was Sie wirklich wollen, da Sie bei category_id beitreten, die nicht wirklich referenziert wird. Vielleicht, wenn Sie genauer erklären, was das Ziel dieser Abfrage ist, könnten wir eine bessere Antwort auf, wie zu erreichen geben.

Verwandte Themen