2013-02-12 49 views
0

my use case从嵌套列表中选择一个字段

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

一对夫妇的事情,寻找在这里:

  1. 你连接中可容纳的行为你category_type模式?从书中获得:当使用'fields'和'contain'选项时 - 要小心包括所有您的查询直接或间接需要的外键。另请注意,由于Containable必须附加到所有用于收容的模型,您可以考虑将其附加到您的AppModel。

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