0

我是 cakephp 的新手,并试图实现这个查询

 SELECT DISTINCT textmessage.mobileNo FROM textmessage 
 JOIN contacts
  ON textmessage.User_id=contacts.User_id AND textmessage.mobileNo = Contacts.mobileNo

我在这里只期待一个结果..想在textMessage控制器中实现这个查询...我以前从未在 CAKEPHP 中使用过联接查询...我实际上在两个表中都有一个mobileNo字段,我想检索 mobileNo 如果textmessage表的mobileNo也在Contacts

这是我根据我的要求修改了您的查询..

  $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')));
4

1 回答 1

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()));                   
}

您还可以在模型中编写关联。我给了你一个动态加入任何表的例子。

根据您编辑的问题,如果您不需要两个数组。使用查询()函数。

希望这将满足您的要求。

于 2013-07-04T03:29:23.557 回答