我是cakephp中的新手并试图实现此查询
SELECT DISTINCT textmessage.mobileNo FROM textmessage
JOIN contacts
ON textmessage.User_id=contacts.User_id AND textmessage.mobileNo = Contacts.mobileNo
我期待这里只有一个结果..想在 textMessage 控制器中实现此查询...我以前从未在CAKEPHP中使用连接查询...我实际上有一个 mobileNo如果 textmessage 表的 mobileNo 也在通讯录表表表中两个表中的字段,我想要检索mobileNo p>
这是我根据我的要求修改了你的查询..
$this->bindModel(array('belongsTo' => array('Contact' => array('className' => 'Contact',
'foreignKey' => false,
'conditions' => array('Message.user_id = Contact.user_id','Message.mobileNo = Contact.mobileNo')))), true);
return $message_details = $this->find('all', array('conditions' => array(),
'fields' => array('DISTINCT mobileNo')));
答案 0 :(得分:1)
将以下代码放入控制器代码中:
如果您只需要单一记录:
function test1()
{
$this->TextMessage->bindModel(array('belongsTo' => array('Contact' => array('className' => 'Contact',
'foreignKey' => false,
'conditions' => array('TextMessage.user_id = Contact.user_id')))), false);
$message_details = $this->TextMessage->find('all', array('conditions' => array(),
'fields' => array('DISTINCT mobileNo')));
}
如果您有多条与每个联系人对应的短信,请尝试以下操作:
function test2()
{
$this->Contact->bindModel(array('hasMany' => array('TextMessage' => array('className' => 'TextMessage',
'foreignKey' => false,
'conditions' => array('TextMessage.user_id = Contact.user_id'),
'fields' => array('DISTINCT mobileNo')))
), false);
$message_details = $this->Contact->find('all', array('conditions' => array()));
}
您还可以在模型中编写关联。我给你举了一个动态加入任何表的例子。
根据您编辑的问题,如果您不需要两个阵列。使用query()功能。
希望这能满足您的要求。