2010-06-22 3 views
0

En fait, j'ai une requête mais je suis incapable de le convertir en format de requête CakePHP.convertir une requête simple en requête gâteau?

$result = "select 
      * from esl_userresults 
      where 
      esl_userresults.esl_songID = esl_lyrics.id 
      and esl_lyrics.song_name like '%".$esl_keyword."%'" ; 

Lorsque je convertir cette requête en CakePHP lui donne une erreur comme:

esl_userresults.esl_songID unknown column. 

Répondre

1

Vous pouvez facilement exécuter des requêtes SQL directes sur le gâteau en utilisant par exemple: $ this-> Image-> query (» SELECT * FROM images LIMIT 2; "); (cake manual)

Ou essayer quelque chose simillar à ceci:

$result = Esl_Userresults->find('all' , array('conditions' => array(
      "Esl_Userresults.esl_songID" => "Esl_Lyrics.id", 
      "Esl_Lyrics.song_name LIKE" => '%'.$esl_keyword.'%'), 
       'recursive' => 1) 
      ); 

..given que vous avez correctement lié modèles Esl_Userresults et Esl_Lyrics.

+0

Comment lier correctement à cette table Esl_Userresults et Esl_Lyrics. S'il vous plaît aider .. – rajesh

+0

dépend de ce type de relation EslUserresults & EslLyrics ont. est-ce un-à-plusieurs? C'est très simple en fait. voici un coup d'oeil sur le manuel: http://book.cakephp.org/view/78/Associations-Linking-Models-Together – Vicer

0

Utilisation Comportement conteneurable plutôt que récursif. Cela vous donnera le contrôle jusqu'au niveau du terrain individuel. L'utiliser maintenant, à un stade précoce, en fera une seconde nature plus tard.

Si vous êtes confus en construisant les conditions, construisez-le en dehors de l'appel de méthode. Essayez d'éviter l'utilisation de guillemets, sauf lorsque vous devez inclure des données échappées ou analysées - elles sont plus lentes.

$conditions = array(
    'EslUserresult.esl_songID' => 'EslLyric.id', 
    'EslLyric.song_name LIKE' => '%'.$esl_keyword.'%' 
        ) 
$this->EslUserresult->contain('EslLyric.text'); 
$result = $this->EslUserresult->find('all',array('conditions'=>$conditions)); 
0

Vous pouvez utiliser la fonction de query()AppModel pour exécuter la requête SQL.

ex: $this->ModelName->query('SELECT * FROM table '); cela renverra un tableau d'enregistrements sélectionnés. Vous pouvez passer une requête simple ainsi qu'une requête de jointure complexe.