0

我正在研究 cakephp 并尝试实现 join 。或内部连接查询......我现在正在做的是这个

$this->bindModel(array(
    'belongsTo' => array(
        'Contact' => array(
            'className' => 'Contact',
            'foreignKey' => false,
            'conditions' => array(
                'Message.user_id = Contact.user_id',
                'Message.mobileNo = Contact.mobileNo'
            )
        )
    )
), false);

return $message_details = $this->find('all', array(
    'conditions' => array(),
    'fields' => array('DISTINCT mobileNo')
));

此查询正在执行LEFT JOIN表.. 我想要的是两个表之间的连接内连接

4

2 回答 2

1

您可以在 belongsTo 配置中指定加入的类型,如文档中所述。保留默认值,但您可以使用任何有效的连接类型。只需添加'type' => 'inner'到配置数组中,您应该会得到如下内容:

$this->bindModel(array(
    'belongsTo' => array(
        'Contact' => array(
            'className' => 'Contact',
            'foreignKey' => false,
            'conditions' => array(
                'Message.user_id = Contact.user_id',
                'Message.mobileNo = Contact.mobileNo'
            ),
            'type' => 'inner' // Simply add this
        )
    )
), false);
于 2013-07-04T14:06:37.267 回答
1

或者,您可以在不使用 bingModel 的情况下将连接添加到查询中:

return $message_details = $this->find('all', array(
    'conditions' => array(),
    'fields' => array('DISTINCT mobileNo'),
    'joins'=>array(
        array(
            'table'=>'contacts,
            'alias'=>'Contact',
            'type'=>'INNER',
            'conditions'=>array(
                'Message.user_id = Contact.user_id',
                'Message.mobileNo = Contact.mobileNo'
            )
        )
    )
));
于 2013-07-04T15:00:47.373 回答