2011-01-29 5 views
1

почему нет работы сортировать по "автору"? Не бросать какие-либо ошибки, простопроблема сортировки cakephp, используя соединение

без сортировки
function index() 
     { 
      $this->paginate = array(
        'limit' => 5, 
        'order' => array(
         'Post.id' => 'asc', 
        ), 
        'fields' => array('Post.id', 'Post.title', 'User.name AS aut_name'), 
        'joins' => array(
         array(
          'table' =>'users', 
          'alias' =>'User', 
          'type' =>'LEFT', 
          'conditions' => array(
           'Post.author = User.id' 
          ) 
         ) 
        ) 
      ); 
      $posts = $this->paginate(); 
      $this->set('posts', $posts); 
     } 

<tr> 
     <th><?php echo $paginator->sort('ID', 'id'); ?></th> 
     <th><?php echo $paginator->sort('Author', 'User.name'); ?></th> 
     <th><?php echo $paginator->sort('Tilte', 'title'); ?></th> 
     <th>Actions</th> 
    </tr> 
+3

Ваш код говорит его сортировку по Post.id, а не автором – chustar

+0

Но когда я нажимаю « sort ('Tilte', 'title');?> " сортировать по названию, то почему нет сортировки по Autho r, когда я нажимаю на sort ('Author', 'User.name'); ?>? – lolalola

ответ

1

код предполагает, что поле User.name возвращается как «aut_name», может быть установлен аргумент сортировки, чтобы использовать это имя поля, а?

<th><?php echo $paginator->sort('Author', 'aut_name'); ?></th> 
+0

Спасибо за помощь, но это неправильный ответ - нет работы. – lolalola

1

Может быть, вы должны сделать так в контроллере:

'fields' => array('Post.id', 'Post.title', 'User.name') 

в виду:

<th><?php echo $paginator->sort('Author', 'User.name'); ?></th> 
Смежные вопросы