2012-06-30 5 views
3

Я хочу загрузить последние 3 зарегистрированных пользователей в cakephp, используя поле created в таблице Users.запрос cakephp с лимитом условий и порядком

В мой контроллер у меня есть:

$this->User->recursive = 1; 
    $this->set('users', 
     $this->User->find('all', 
      array('conditions'=> array(
        'limit' => 3, 
        'order' => array(
        'created' => 'asc' 
       ) 
      ) 
     ) 
    ) 
); 

Код выше при запуске возвращает эту ошибку:

Syntax error or access violation: 1064 You have an error in your SQL 
syntax; check the manual that corresponds to your MySQL server 
version for the right syntax to use near 'order = ('asc')' at line 

Что я должен сделать, чтобы устранить эту ошибку?

+1

'conditions',' 'limit' & order' должны быть на том же уровне :) – Bob

ответ

4

попробовать что-то вроде этого:

$this->set('users', $this->User->find('all', array(
    'limit' => 3, 
    'order' => 'User.created DESC', 
    'recursive' => 1, 
))); 
0

Пожалуйста, попробуйте такой код ниже:

$this->set('users', $this->User->find('all', array(
             'order' => 'created ASC', 
             'limit' => 3 ) 
      )); 

Пожалуйста, обратитесь к this link для CakePHP найти условия.

1

Держите ваш заказ и ограничить из стороны состояния массива, то он будет работать гладко.

Используйте этот формат:

array(
'conditions' => array('Model.field' => $thisValue), //array of conditions 
'recursive' => 1, //int 
'fields' => array('Model.field1', 'DISTINCT Model.field2'), 
'order' => array('Model.created', 'Model.field3 DESC'), 
'group' => array('Model.field'), //fields to GROUP BY 
'limit' => n, //int 
'page' => n, //int 
'offset' => n, //int 
'callbacks' => true //other possible values are false, 'before', 'after' 
) 
2

Вы можете также легко выбрать данные с помощью этого запроса SQL:

$sql = "SELECT * FROM users where recursive =1 order by created desc limit 0,3"; 
$users = $this->users->query($sql); 

$this->set(compact('users')); 
0
$dashreport = $this->Task->find('all', array('conditions' => 
       array('Task.throttle' => "Report", 'Task.status' => Null, 'Task.userid' => $this->Session->read('userid')),'order'=>array('Task.id DESC') 
       ,'limit'=> 4)); 
-1

Когда вы ограничиваете данные первых, вы должны заказать DESC or ASC. Еще один простой способ, который работает отлично

$this->set('datas', 
    $this->Your_Model_Name->find('all', 
     array (
      'conditions' => array('Site_id' => $site_name), //conditions here 
      'fields'  => array('Date_time','Ac_1_Status','Tempin'), 
      'order'   => array('id' => 'desc'), // id desc or asc 
      'limit'   => 15 
     ) 
    ) 
); 
+0

@Deejay Нет, это 100% правильно. Вы снова реализуете свои проекты и комментируете. –

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