2013-08-12 1 views
0

Я работаю над CakeFp 2.x. У меня есть запрос:данные cakephp из нескольких таблиц join query

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

Запрос не работает должным образом. Я выясню проблему. Проблема заключается в том, когда я печатаю этот запрос. Он добавляет эту одинарную цитату ('') вокруг («Contact.mobileNo»), как это И Message. mobileNo IN ('Contact.mobileNo', 'Contact.workNo', 'Contact.homeNo', 'Contact.other'))

Так что, когда я извлекаю цитаты в SQL йог. Запрос работает. Я имею в виду, я думаю, что он не находит mobileno, workno и т. Д. Из контактов здесь в этой части. Кто-нибудь знает, что мне делать?

хорошо, если вы хотите, чтобы увидеть простой SQL-запрос, который работает идеально .. здесь

  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 

ответ

2

Вы должны изменить его на:

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

при использовании ключ-значение для условий , торт рассматривает значение как строковое значение, а не имя столбца.

+0

thankyouuuuuuuuuuuuuuuuuuuuuuuu sp much – hellosheikh

 Смежные вопросы

  • Нет связанных вопросов^_^