0

我的用例

我有一个如上所述的用例。在我的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
        )

)

问题:如何CategoryType在返回字段中指定?

我尝试过Category.CategoryType.*并且CategoryType.*没有工作。但是如果我完全取出fields数组,让cakephp默认处理,cakephp设法返回数组中的CategoryType。

4

1 回答 1

0

有几件事要在这里寻找:

  1. 您是否将可包含行为附加到您的category_type模型?从书中:当使用“字段”和“包含”选项时 - 小心包含您的查询直接或间接需要的所有外键。还请注意,因为 Containable 必须附加到容器中使用的所有模型,您可以考虑将其附加到您的 AppModel。

  2. 由于您正在分配fields可包含参数的外部,因此这可能会覆盖您的可包含行为。考虑移动"fields" => array("Category.*", "COUNT(*) AS TOTAL", "AVG(Transaction.debit) AS AVERAGE_COST"),到您的 contains 数组中。

于 2013-02-12T10:26:48.350 回答