我正在开发一个cakephp并尝试实现连接。或内连接查询...我现在正在做的是这个
$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 表..我想要的是两个表之间的加入或内部联接
答案 0 :(得分:1)
您可以在the documentation中说明,在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);
答案 1 :(得分: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'
)
)
)
));