CakePHP, используя пагинат и порядок - PullRequest
2 голосов
/ 16 февраля 2011

HI, почему не работает функция "заказ"?

$this->paginate = array(
                'limit' => 5,
                'order' => array(
                    'User.name' => 'desc'
                ),
                'fields' => array('Post.id', 'Post.title', 'User.name AS aut_name'),                        
                'joins' => array(
                    array(
                        'table' =>'users',
                        'alias' =>'User',
                        'type' =>'LEFT',
                        'conditions' => array(
                            'Post.user_id = User.user_id'
                        )
                    )
                )
        );  

        $posts = $this->paginate();
        $this->set(compact('posts'));

Структура БД:

posts:
id, title,body, created, updated, user_id

users:
user_id, name

Ответы [ 3 ]

1 голос
/ 16 февраля 2011

Поскольку вы указываете User.name As aut_name в своем fields, вы не сможете сделать заказ на User.name, если у вас также нет User.name в вашем списке fields.В качестве альтернативы используйте:

'order' => array(
    'aut_name' => 'desc'
),

ПРИМЕЧАНИЕ. Это только для первоначального запроса. Для сортировки по aut_name из представления вам необходимо использовать виртуальное поле в модели User.

Также, как сказал @Min, твои условия верны?

1 голос
/ 28 мая 2013

Добавление решения по той же проблеме:

Эта работа для cakePHP 2.3.4

Условия разбивки на CakePHP в таблице соединений

1 голос
/ 16 февраля 2011

Быстрый просмотр вашего кода ... Существует ли поле user_id в таблице пользователей?

'conditions' => array(
    'Post.user_id = User.id'
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...