@EVOSandru6

Как правильно наследоваться от CActiveRecord в Yii?

Добрый день,

Есть таблица ActiveRecord, производная от CActiveRecord. От первой я унаследовал все модели. В ActiveRecord единственный метод:

static function getAll(){
        $criteria = new CDbCriteria();
        $criteria->condition = 'EXIST = 1';
        return self::model()->findAll($criteria);
    }


Есть модель Project, которая наследует ActiveRecord:
В ней есть стандартный метод, который на многих форумах заявляли решением моей проблемы

public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }


Когда я вызываю метод в ProjectController:

public function actionIndex()
  {
        $model = Project::getAll();
        $this->render('index',array(
            'model'=>$model
        ));
}


Ловлю ошибку:

Fatal error: Cannot instantiate abstract class CActiveRecord in X:\home\ferrum\www\framework\db\ar\CActiveRecord.php on line 395

Вроде бы ошибка возникает в момент вызова данной строки:
return self::model()->findAll($criteria);

Помогите пожалуйста!
  • Вопрос задан
  • 2706 просмотров
Решения вопроса 2
fornit1917
@fornit1917
Попробуйте
return static::model()->findAll($criteria);

Или getAll сделайте не статическим:
public function getAll(){
        $criteria = new CDbCriteria();
        $criteria->condition = 'EXIST = 1';
        return $this->findAll($criteria);
    }


И используйте так:
Project::model()->getAll();
Ответ написан
Комментировать
проблема у Вас вот тут.
return self::model()->findAll($criteria);

а точнее self который ссылается на СActiveRecord
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы