Php 从嵌套在Contain中的表中选择字段

Php 从嵌套在Contain中的表中选择字段,php,cakephp,cakephp-2.0,Php,Cakephp,Cakephp 2.0,我有一个如上所述的用例。在我的CategoriesController.php中,我对Category进行如下查询: $category = $this->Category->Transaction->find("first", array( "fields" => array("Category.*", "COUNT(*) AS TOTAL", "AVG(Transacti

我有一个如上所述的用例。在我的
CategoriesController.php
中,我对
Category
进行如下查询:

$category = $this->Category->Transaction->find("first", array(
    "fields" => array("Category.*", "COUNT(*) AS TOTAL", "AVG(Transaction.debit) AS AVERAGE_COST"),
    "conditions" => array("not" => array("Transaction.debit" => null)),
    "contain" => array("Category" => array("CategoryType")),
    "group" => "Transaction.category_id",
    "order" => array("TOTAL" => "desc"),
));
这就是我得到的回报:

Array
(
    [Category] => Array
        (
            [id] => 2
            [name] => FOOD
            [category_type_id] => 2
        )

    [0] => Array
        (
            [TOTAL] => 4596
            [AVERAGE_COST] => 7.668451
        )

)
问题:如何在返回字段中指定
类别类型


我尝试了
Category.CategoryType.*
CategoryType.*
但不起作用。但是,如果我完全取出
字段
数组,让cakephp默认处理,cakephp会设法在数组中返回CategoryType。

这里需要查找以下几点:

  • 您是否将可包含的行为附加到您的
    类别类型
    模型?从书中可以看出:当使用“字段”和“包含”选项时,请注意包含查询直接或间接需要的所有外键。还请注意,因为容器必须附加到容器中使用的所有模型中,您可以考虑将其附加到您的AppMype。
  • 由于您将
    字段分配到可包含参数之外,因此这可能会覆盖您的可包含行为。考虑将<代码>字段“字段”=>数组(“类别*”,“计数(*)为总数”,“AVG(事务。借位)为平均值开销”),<代码>到您的包含数组。