2012-12-04 13 views
1

我试图让下面我CakePHP的自定义查询嵌套数组:左CakePHP的自定义查询连接表的行为嵌套数组

$this->query(" 
       SELECT * 
       FROM group_buys GroupBuy 
       LEFT JOIN products Product 
       ON Product.id = GroupBuy.product_id 
       LEFT JOIN group_buy_users GroupBuysUser 
       ON GroupBuysUser.group_buy_id = GroupBuy.id 
       LEFT JOIN group_buy_images GroupBuyImage 
       ON GroupBuyImage.group_buy_id = GroupBuy.id 
       LEFT JOIN product_details ProductDetail 
       ON ProductDetail.product_id = Product.id 
       LEFT JOIN specifications Specification 
       ON Specification.id = ProductDetail.specification_id 
       LEFT JOIN specification_categories SpecificationCategory 
       ON SpecificationCategory.id = Specification.specification_category_id 
       WHERE GroupBuy.id = {$id} 
      "); 

问题的,这是它与冗余数据明显与团购来了表行值重复我不想要的。

有没有一种方法,我们可以有嵌套数组,如果LEFT JOINED表中有更多的行比以前的表与Cake的自定义查询?

我知道这可以用find recursive = 2来完成,但是想用自定义查询来实现。

+0

凭借其列,你会比较行 –

+0

为什么你需要使用查询()? – 472084

回答

0

您是否尝试过使用可容纳?

$this->GroupBuy->Behaviors->attach('Containable'); 

$this->GroupBuy->find('all', array(
    'conditions' => array('GroupBuy.id' => $id), 
    'contain' => array(
     'Product' => array(
      'ProductDetail' => array(
       'Specification' => array(
        'SpecificationCategory' 
       ) 
      ) 
     ), 
     'GroupBuysUser', 
     'GroupBuyImage' 
    ), 
)); 
+0

我知道,我已经尝试过,但我更愿意使用自定义查询,因为我想知道幕后到底发生了什么。使用那些可查找查询查询输出什么查询? –

+0

它最终会成为多个查询,您可以看到通过向您的布局添加'echo $ this-> element('sql_dump');'来运行任何查询,您将需要调试。 – 472084