2016-09-13 62 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米不同的尺寸,10行将具有重复名称产生一个查询时,描述,CATEGORY_ID元件

有没有办法重写它,所以尺寸的名称和价格作为数组作为子数组提供?

回答

0

也许只是使用Containable而不是Join?您可以在您的产品和contain尺寸和产品价格上运行find()。这会得到你正在寻找的数组/子数组。

唯一不利的一面是它仍然会拉动产品,即使它们没有匹配的尺寸。

由于您加入的并不是真正引用的category_id,因此很难说出您真正要做什么。也许如果你更详细地解释这个查询的目标是什么,我们可以提供一个更好的答案来解决如何实现。