Функция Cakephp в модели

Я разрабатываю сайт с помощью cakephp. Но время отклика слишком велико. Итак, я хочу реализовать толстую модель и тонкий контроллер.

Но у меня есть

Вызов функции-члена fashionpage () на не-объекте

при вызове функции fashionpage в контроллере.

У меня есть модель дома (отношения: у дома есть много тележек)

Мой контроллер:

public function fashionlist() {
        $user = $this->Auth->user('id');

        $counter = $this->Home->fashionpage($user);
        $this->set(compact('user', 'counter'));
    }

Моя модель:

public function fashionpage($user = null) {
        return $this->Home->Cart->find('count', array('conditions'=>
                                                   array('conditions'=>array('User.id'=>$user))));
      }

Может кто-нибудь мне помочь.


person dancingAngel    schedule 07.02.2014    source источник
comment
функция fashionpage находится в модели дома или в модели корзины?   -  person arilia    schedule 07.02.2014
comment
в домашних условиях модель @arilia   -  person dancingAngel    schedule 07.02.2014
comment
а функция fashionlist есть в HomesController?   -  person arilia    schedule 07.02.2014
comment
да да. в домах   -  person dancingAngel    schedule 07.02.2014
comment
Из ошибки очевидно, что вы не загрузили Home модель. Попробуйте через $this->loadModel('Home'); или $uses =array('Home');. И сделай @arilia fix   -  person lp1051    schedule 10.02.2014
comment
@ lp1051, если он находится в HomesController, ему не нужно загружать домашнюю модель   -  person arilia    schedule 10.02.2014
comment
В ошибке ясно сказано: $this->Home не является объектом. Возможно торт 1.x или какой-то неправильный регистр в имени файла / директории? Вот почему я попросил попробовать загрузить модель вручную и посмотреть, что будет.   -  person lp1051    schedule 10.02.2014


Ответы (2)


Ошибка в вашей модели. Фактически, когда вы находитесь в своем файле модели, $this - это модель (в вашем случае Home), поэтому не нужно делать $this->Home->Cart, а просто $this->Cart

так что нет

public function fashionpage($user = null) {
        return $this->Home->Cart->find('count', array('conditions'=>
                                                   array('conditions'=>array('User.id'=>$user))));
      }

но

public function fashionpage($user = null) {
        return $this->Cart->find('count', array('conditions'=>
                                                   array('conditions'=>array('User.id'=>$user))));
      }
person arilia    schedule 07.02.2014
comment
когда вы спрашиваете: «Функция страницы моды находится в домашней модели или в модели корзины»? ', я пытаюсь добавить эту функцию в модель тележки. и удалите название модели как: 'public function fashionpage ($ user = null) {return $ this- ›find (' count ', array (' conditions '=› array (' User.id '= ›$ user))) ; } 'и теперь он успешно работает. спасибо за идею .. хе-хе - person dancingAngel; 07.02.2014
comment
что-то не так, если он работает так, как вы. Если вы это сделаете, тогда в вашем HomesController вам нужно будет сделать $this->Home->Cart->fashionpage($user); - person arilia; 07.02.2014
comment
Возможно, ваша ассоциация Home hasMany Cart не работает должным образом. Проверьте и это. - person Garry; 08.02.2014

Я думаю, вы должны называть это постоянным объектом

person pramod    schedule 07.02.2014
comment
что ты имел в виду под постоянным объектом я? - person dancingAngel; 07.02.2014
comment
$ this- ›модель ('название модели'); - person pramod; 07.02.2014