2

我试图只选择不同的相关模型条目,但它似乎不起作用。

我有这个:

$active_questions = $this->Question->find('all', array('conditions' => array('test_id' => $active_tests), 'fields' => array('answer_style_id'), 'contain' => array(
        'Answer' => array(
            'fields' => array('capital_category_id'),
            'CapitalCategory' => array(
                'fields' => array('id', 'DISTINCT capital_id', 'DISTINCT category_id', 'delete_flag'),
                'Capital' => array(
                    'fields' => array('id', 'delete_flag')
                ),
                'Category' => array(
                    'fields' => array('id', 'delete_flag')
                )
            )
        )
    )));

但是 Cake 似乎会自动添加关联的模型键,即使 id 我用 DISTINCT 关键字指定它:

Query: SELECT `CapitalCategory`.`id`, DISTINCT `CapitalCategory`.`capital_id`, DISTINCT `CapitalCategory`.`category_id`, `CapitalCategory`.`delete_flag`, `CapitalCategory`.`capital_id`, `CapitalCategory`.`category_id` FROM `capital_categories` AS `CapitalCategory`   WHERE `CapitalCategory`.`id` = 217  

如何仅过滤掉 DISTINCT 大写字母或类别?对于当前示例,Cake 返回 20 个具有相同 id 的类别。我只想退回一个。

谢谢你。

4

2 回答 2

0

在我的脑海中,以下可能使用“组”选项

$active_questions = $this->Question->find(
  'all', 
  array(
    'conditions' => array('Question.test_id' => $active_tests), 
    'fields' => array('answer_style_id'), 
    'contain' => array(
      'Answer' => array(
        'fields' => array('capital_category_id'),
        'CapitalCategory' => array(
          'fields' => array('id', 'capital_id', 'category_id', 'delete_flag'),
          'group' => array('capital_id', 'category_id'),
          'Capital' => array(
            'fields' => array('id', 'delete_flag')
          ),
          'Category' => array(
            'fields' => array('id', 'delete_flag')
          )
        )
      )
    )
  )
);
于 2011-05-13T18:20:40.230 回答
0

你为什么不把'group'放在'fields'下面而不是'contain'里面,你可能不得不完全删除'fields'。

于 2011-07-28T02:34:26.580 回答