Запрос количества страниц CakePHP не работает

Здравствуйте, у меня есть отношения в пользовательской модели Like This.

Модель пользователя

public $hasOne = [
        'Userdetail'  => [
            'className'    => 'Userdetail',
            'foreignKey'   => 'user_id'
        ],
        'Application' => [
            'className'    => 'Application',
            'foreignKey'   => 'user_id'
        ],
    ];

Я добавил дополнительные отношения HasOne в MyConroller, как показано ниже:

Контроллер

$this->User->bindModel([
            'hasOne' => [
                'Events' => [
                    'className'  => 'Events',
                    'foreignKey' => 'user_id',
                    'dependent' => true,
                ]
            ]
        ]);

Я создаю разбиение на страницы с моделью пользователя, как показано ниже:

Разбивка на страницы

$this->paginate = [
            'conditions' => [
                $this->conditions,
                'Events.id !=' => null
            ],
            'order' => 'User.id DESC'
        ];

Мне не нужна эта запись, идентификатор события которой равен нулю, поэтому я помещаю ее в условие разбивки на страницы. Чем я получил ошибку ниже.

Unknown column 'Events.id' in 'where clause'

Модель события не отражается в запросе Count для разбиения на страницы.

Пожалуйста, помогите мне в этом вопросе.

Заранее спасибо за помощь.


person Rav's Patel    schedule 19.03.2016    source источник
comment
$this->User->bindModel([ 'hasOne' => [ 'Event' => [ 'className' => 'Events', 'foreignKey' => 'user_id', 'dependent' => true, ], 'conditions'=>['Events.id !=' => null, ] ] ]); и удалить его из paginate condition   -  person Anant Kumar Singh    schedule 19.03.2016
comment
Нет, это CakePhp 2.6.   -  person Rav's Patel    schedule 19.03.2016
comment
Я пробую этот @Anant, но он не работает   -  person Rav's Patel    schedule 19.03.2016
comment
извините за одну ошибку 'className' => 'Event' и 'conditions'=>['Event.id !='   -  person Anant Kumar Singh    schedule 19.03.2016
comment
Да, он работает, но он извлечет все данные, у которых нет записи в таблице событий. Я не хочу тех записей, у которых нет никаких событий.   -  person Rav's Patel    schedule 19.03.2016
comment
Давайте продолжим это обсуждение в чате.   -  person Rav's Patel    schedule 19.03.2016


Ответы (1)


Вы должны добавить false в качестве второго параметра в bindModel, чтобы сделать изменения постоянными:

$this->User->bindModel([
        'hasOne' => [
            'Events' => [
                'className'  => 'Events',
                'foreignKey' => 'user_id',
                'dependent' => true,
            ]
        ]
    ],false);

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

См. Model::bindModel().

person Inigo Flores    schedule 21.03.2016