2016-09-13 4 views
0

私は問題がCakePHPの

$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', 
      ]); 

のようなクエリをされている、10行には、名前、説明、CATEGORY_ID要素を繰り返すことで生成されます

サイズの名前と価格がサブ配列として配列として渡されるように書き直す方法はありますか?

答えて

0

Joinの代わりにContainableを使用すると便利でしょうか?あなたの商品にはfind()、サイズと商品の商品数はcontainです。これはあなたが探している配列/サブ配列を取得します。

唯一の欠点は、サイズが一致していなくても製品を引き出すことができることです。

実際には参照されていないcategory_idに参加しているので、実際に何をしているのかが分かりにくいです。たぶん、このクエリの目的が何であるかをより詳細に説明すると、達成方法に関するより良い回答を提供することができます。