可包含和额外的id字段

时间:2014-07-31 09:40:58

标签: php mysql cakephp

假设我有一个典型的发布 belongsTo 用户 belongsTo 群组方案

假设我想使用某些条件过滤帖子,我想知道涉及多少个不同的组(我只需要group_id的列表)

我做了类似

的事情
$this->Post->find(
    'all'
    array(
        'fields' => array('DISTINCT User.group_id'),
        'conditions' => array ( ... ), // here go my search criteria about posts
        'contain' => array('User')
    )
);

我期待像

这样的查询
SELECT DISTINCT User.group_id FROM posts AS Post LEFT JOIN users AS USER ON ...

但是当使用contains cake时会引入一个额外的字段,以便查询变为

SELECT DISTINCT User.group_id, User.id FROM posts AS Post LEFT JOIN users AS USER ON ...

我没有得到预期的结果。

我使用手动连接解决了,但有没有办法强制蛋糕不要为包含的表添加id字段?

1 个答案:

答案 0 :(得分:1)

您应该可以通过关闭可包含行为的$autoFields来完成您想要的任务。

$this->Post->Behaviors->load('Containable', array('autoFields' => false));

有关详细信息,请参阅该书:http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html#containablebehavior-options