2013-08-12 5 views
0

Je travaille sur un Cakephp 2.x. J'ai une requête comme ceci:Données cakephp de plusieurs tables rejoindre la requête

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

       'order'=>'Message.idTextMessage DESC', 
      ) 
     ) 
    ), false); 

    return $this->find('all', array('conditions' => array('Message.User_id' => $userid), 
     'contain' => array('Contact'), 
     'fields' => array('Message.mobileNo', 
      'Contact.mobileNo', 
      'Contact.workNo', 
      'Contact.homeNo', 
      'Contact.other', 
      'Contact.name', 
      'Message.dateTime', 
      'Message.type', 
      'Message.body'), 
     'group' => 'Message.mobileNo', 
     'limit' => 6)); 
} 

La requête ne fonctionne pas comme prévu. Eh bien, je comprends le problème. Le problème est lorsque j'imprime cette requête.Il est d'ajouter cette citation unique ('') autour ('Contact.mobileNo') comme ceci ET Message. mobileNo IN ('Contact.mobileNo', 'Contact.workNo', 'Contact.homeNo', 'Contact.other'))

Alors, quand je supprimer les citations dans JOJ SQL. La requête fonctionne. Je pense que je ne trouve pas le mobileno, le workno, etc. des contacts ici dans cette partie. Quelqu'un sait ce que je devrais faire?

bien si vous voulez voir la simple requête SQL qui fonctionne parfaitement .. est ici

  SELECT Message.mobileNo, 
     Contact.mobileNo, 
     Contact.workNo, 
     Contact.homeNo, 
     Contact.other, 
     Contact.name, 

     Message.body, 
     Message.idTextMessage 
    FROM cakephp_db.textmessage AS Message 
    LEFT JOIN cakephp_db.contacts AS Contact ON Message.user_id = Contact.user_id 
            AND Message.mobileNo IN (Contact.mobileNo,   Contact.workNo, Contact.homeNo, Contact.other) 
WHERE Message.User_id = 23 
GROUP BY Message.mobileNo 
ORDER BY Message.idTextMessage DESC LIMIT 6 

Répondre

2

Vous devez changer pour:

$this->bindModel(array(
     'belongsTo' => array(
      'Contact' => array(
       'className' => 'Contact', 
       'foreignKey' => false, 
       'conditions' => array(
        'Message.user_id = Contact.user_id', 
        '`Message`.`mobileNo` IN (`Contact`.`mobileNo`,`Contact`.`workNo`,`Contact`.`homeNo`,`Contact`.`other`)'), 
       'order'=>'Message.idTextMessage DESC', 
      ) 
     ) 
    ), false); 

lorsque vous utilisez la valeur clé pour les conditions , le gâteau considère la valeur comme valeur de chaîne pas un nom de colonne.

+0

thankyouuuuuuuuuuuuuuuuuuuuuuuuuu sp beaucoup – hellosheikh

Questions connexes