2010-06-22 4 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 на торте с использованием, например: $ this->> запрос Picture-(» 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

+0

зависит от того, какие отношения есть у EslUserresults & EslLyrics. это один-ко-многим? на самом деле это очень просто. здесь посмотрите руководство: http://book.cakephp.org/view/78/Associations-Linking-Models-Together – Vicer

0

Используйте 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)); 
0

Вы можете использовать функцию query()AppModel «s для выполнения SQL запроса.

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

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