2010-06-22 48 views
0

其實我有1個查詢,但我無法將它轉換成CakePHP查詢格式。將簡單查詢轉換爲蛋糕查詢?

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

當我轉換此查詢到的CakePHP它給出這樣的錯誤:

esl_userresults.esl_songID unknown column. 

回答

1

您可以輕鬆地使用例如直接運行SQL查詢的蛋糕: $這個 - >圖片 - >查詢(」 SELECT * FROM pictures LIMIT 2;「); (cake manual

或者嘗試一些呈三角這樣的:

$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已正確連接Esl_Userresults和Esl_Lyrics模型。

+0

如何正確鏈接到此表Esl_Userresults和Esl_Lyrics。 請幫忙.. – rajesh 2010-06-23 06:43:14

+0

取決於EslUserresults&EslLyrics有什麼樣的關係。它是一對多的嗎?其實這很簡單。這裏看看手冊:http://book.cakephp.org/view/78/Associations-Linking-Models-Together – Vicer 2010-06-23 12:13:02

0

使用可包含的行爲而不是遞歸。它會讓你控制到個人領域。現在使用它,在早期階段,會在後期使其成爲第二性質。

如果您在構建條件時感到困惑,請在方法調用之外構建它。

儘量避免使用雙引號,除非需要包含已轉義或已解析的數據 - 它們較慢。

$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

您可以使用AppModelquery()功能來運行SQL查詢。

ex:$this->ModelName->query('SELECT * FROM'); 這將返回一個選定記錄的數組。您可以傳遞簡單的查詢以及複雜的連接查詢。