我有一个如上所述的用例。在我的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。
答案 0 :(得分:0)
这里有几点需要注意:
您是否在您的category_type
模型中附加了可包含的行为?来自本书:使用'fields'和'contains'选项时 - 请小心包含您的查询直接或间接需要的所有外键。另请注意,因为Containable必须附加到收容中使用的所有模型,您可以考虑将其附加到您的AppModel。
由于您在可包含参数之外分配fields
,因此这可能会覆盖您的可包含行为。考虑将"fields" => array("Category.*", "COUNT(*) AS TOTAL", "AVG(Transaction.debit) AS AVERAGE_COST"),
移动到您的包含数组中。