将左侧联接表行作为嵌套数组的Cakephp自定义查询

将左侧联接表行作为嵌套数组的Cakephp自定义查询,php,mysql,cakephp,Php,Mysql,Cakephp,我正在尝试为下面的Cakephp自定义查询获取嵌套数组: $this->query(" SELECT * FROM group_buys GroupBuy LEFT JOIN products Product ON Product.id = GroupBuy.product_id LEFT JOIN group_buy_users

我正在尝试为下面的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}
            ");
问题是,它会产生冗余数据,显然GroupBuy表行值会重复出现,这是我不希望看到的

如果左联接表的行数比使用Cake自定义查询的前一个表的行数多,是否有一种方法可以使用嵌套数组


我知道这可以通过find recursive=2实现,但我想通过自定义查询实现这一点。

您尝试过使用containable吗

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

您会将行与哪个列进行比较为什么需要使用query()?我知道,我也尝试过,但我更喜欢使用自定义查询,因为我想确切地知道幕后发生了什么。与那些可包含的find查询一起输出的是什么查询?它最终将是多个查询,您可以通过添加
echo$this->element('sql_dump')看到运行的任何查询