преобразование простого запроса в запрос торта?

На самом деле у меня есть 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. 

Related of "преобразование простого запроса в запрос торта?"

Вы можете легко запускать прямые sql-запросы на торте, используя, например: $ this-> Picture-> query («SELECT * FROM pictures LIMIT 2;»); ( руководство для торта )

Или попробуйте что-нибудь подобное:

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

… что вы правильно связали модели Esl_Userresults и Esl_Lyrics.

Используйте Containable поведение, а не рекурсивное. Это даст вам контроль над отдельным полевым уровнем. Используя его сейчас, на ранней стадии, он станет второй натурой позже.

Если вы запутались в создании условий, выстройте их вне вызова метода.

Старайтесь избегать использования двойных кавычек, за исключением тех случаев, когда вам нужно включать экранированные или анализируемые данные – они медленнее.

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

Вы можете использовать AppModel query() AppModel для запуска SQL-запроса.

ex: $this->ModelName->query('SELECT * FROM table '); это вернет массив выбранных записей. Вы можете передать простой запрос, а также сложный запрос соединения.