2013-07-03 59 views
0

我在CakePHP的新手,想实现这个查询CakePHP的使用JOIN在find方法

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

我在这里希望只有一个结果..想在文字信息来实现此查询控制器...我从来没有使用联接查询之前在CakePHP ...我有两个表实际上是一个mobileNo场,我想找回mobileNo如果mobileNo的TextMessage的表也是联系

这里是我根据我的质量要求修改您的查询..

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

回答

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()函数。

希望这能满足您的要求。

+0

@Arjun Jain谢谢Arjun ..但是你没有在你的查询中使用“distinct”? – hellosheikh

+0

以及当我运行你的第一个查询..它不给我所需的结果。 – hellosheikh

+0

我在哪里得到您的查询mobileNo也没有明显的用途? – hellosheikh