cakephp如何避免查询结果中的重复列

时间:2016-09-13 16:24:48

标签: cakephp cakephp-3.0

我有一个像

这样的查询
$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元素

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

1 个答案:

答案 0 :(得分:0)

也许只使用Containable而不是Join?您可以在产品和find()尺码和ProductPrices上投放contain。这将获得您正在寻找的数组/子数组。

唯一的缺点是,即使产品没有匹配的尺寸,它仍会拉动产品。

很难说出你真正想要的是什么,因为你加入的是category_id,但并没有真正引用它。也许如果你更详细地解释这个查询的目标是什么,我们可以提供一个更好的答案来解决这个问题。