格式化CakePHP连接语句

格式化CakePHP连接语句,php,mysql,cakephp,join,Php,Mysql,Cakephp,Join,我正在使用CakePHP2.3.8,并试图更有效地联接两个表。建筑物和建筑物租金 buildings id | name | description | property_owner | building_type 1 Big Big Building 1 1 building_rental_rates id | building_type | rate_name |

我正在使用CakePHP2.3.8,并试图更有效地联接两个表。建筑物和建筑物租金

buildings
id  |   name  |   description    |  property_owner  |  building_type
 1      Big      Big Building               1               1

building_rental_rates
id  |   building_type |   rate_name    |      rate
 1            1              daily          150.00
 2            1              hourly         15.00
我想找一栋楼,选择不同的租金。这些表在建筑类型上连接。这是我的find声明

$buildings = $this->Building ->find('all',array(
                        'Building.property_owner' => '1',
                        'fields' => array('Building.*','BuildingRentalRate.*'),
                        'joins' => array(
                            array(
                                'table' => 'building_rental_rates',
                                'alias' => 'BuildingRentalRate',
                                'type' => 'inner',
                                'conditions' => array(
                                    'Building.building_type = BuildingRentalRate.building_type'
                                )
                            )
                        )
                    ));
结果如下

Array
(
    [0] => Array
        (
            [Building] => Array
                (
                    [id] => 1
                    [name] => Big
                    [description] =>  Big Building
                    [property_owner] => 1
                    [building_type] => 1
                )

            [BuildingRentalRate] => Array
                (
                    [id] => 1
                    [building_type] => 1
                    [rate_name] => daily
                    [rate] => 150.00
                )

        )

    [1] => Array
        (
            [Building] => Array
                (
                    [id] => 1
                    [name] => Big
                    [description] =>  Big Building
                    [property_owner] => 1
                    [building_type] => 1
                )

             [BuildingRentalRate] => Array
                (
                    [id] => 2
                    [building_type] => 1
                    [rate_name] => hourly
                    [rate] => 15.00
                )

        )
)
虽然数据被正确地找到了,但是遍历它是一件痛苦的事情我可以使用join语句生成此输出吗?请注意BuildingRentalRate是一个数组,包含该表中共享同一建筑类型的所有条目

Array
(
    [0] => Array
        (
            [Building] => Array
                (
                    [id] => 1
                    [name] => Big
                    [description] =>  Big Building
                    [property_owner] => 1
                    [building_type] => 1
                )

            [BuildingRentalRate] => Array
                (
                  [0] => Array
                     (
                        [id] => 1
                        [building_type] => 1
                        [rate_name] => daily
                        [rate] => 150.00
                     )
                  [1] => Array
                     (
                        [id] => 2
                        [building_type] => 1
                        [rate_name] => hourly
                        [rate] => 15.00
                      )
                )

        )
)
我知道Cake在使用模型关联时可以输出这样的结果,但显然我无法正确地获得关联,因为它一直在BuildingRentalRate.Building_类型上加入Building.id(应该是Building.Building_类型=BuildingRentalRate.Building_类型)

即使和我有这样的联系

 //Building.php
 public $hasMany = array('BuildingRentalRate' => array('foreignKey' => 'building_type'));

 //BuildingRentalRate.php
 public $belongsTo = array('Building' => array('foreignKey' => 'building_type'));
它将在BuildingRentalRate.Building_type上加入Building.id,尽管在两个模型中都指定Building_type作为外键


我可以在条件中执行某种嵌套SQL查询吗?或者有更简单的方法吗?

如果在
BuildingRentalRate.php中以这种方式设置关系,应该可以避免使用联接

$public belongsTo = array(
    'Building' => array(
        'foreignKey' => false,
        'conditions' => array
        (
            'Building.building_type' => 'BuildingRentalRate.building_type'
        )
    )
);

我应该在Building.php模型中添加什么?如果我没有放置任何关联,那么CakePHP不会自动搜索它。我尝试在Building.php中使用相反的方法(条件为'BuildingRentalRate.Building_-type'=>'Building.Building_-type'),但它没有加入任何内容。当我搜索建筑物时,返回的BuildingRentalRate数组都是空的。