Как использовать сложный запрос в cakephp?

#php #cakephp-1.3

#php #cakephp-1.3

Вопрос:

Я пытаюсь выполнить запрос внутри своей модели и вызвать его в своем контроллере, но по какой-то причине я получаю некоторые ошибки. Вот моя модель:

 class Room extends AppModel {
var $name = 'Room';
var $displayField = 'title';
var $actsAs = array('Containable');

function select($qwe){
    $results = $this->Room->query("SELECT * FROM test WHERE qwe= ".$qwe." ");
}
  

В этом случае я получаю Undefined property: Room::$room . В контроллере у меня есть:

 ...
function success(){
    $qwe = "testing"
$this->set('get', $this->Room->select($qwe));    
}
}
  

Есть идеи о том, что я делаю не так?

Ответ №1:

Вы вызываете внутри модели, поэтому

     $results = $this->Room->query("SELECT * FROM test WHERE qwe= ".$qwe." ");
  

должно быть

     $results = $this->query("SELECT * FROM test WHERE qwe= ".$qwe." ");
  

поскольку query() это метод класса Model, который является родительским классом любой другой модели, Model Room не имеет свойства Room, поэтому и возникает ошибка. Если вы вызываете эту функцию через контроллер, тогда вы используете $this->ModelName->method()

Ваша функция select ничего не возвращает, вы должны изменить ее на

    function select($qwe){
       $results = $this->query("SELECT * FROM test WHERE qwe= ".$qwe." ");
       return $results;
   }
  

Комментарии:

1. отлично, спасибо, еще одна вещь, если можно … в представлении, которое я использую <?php foreach ($get as $data):?>.... , и я получаю Invalid argument supplied for foreach() . в чем, по вашему мнению, может быть проблема?