2013-10-15 2 views
0
class SomeModel extends CActiveRecord 
{ 
    public static function model($className=__CLASS__) 
    { 
     return parent::model($className); 
    } 

    public function tableName() 
    { 
     return '{{some_table}}'; 
    } 

    public function getItemByParentId($parentId) 
    { 
     $criteria=new CDbCriteria; 
     //some criteria 

     return self::model()->findAll($criteria); 
    } 
} 

Этот метод работает должным образом, когда я называю его от контроллера SomeModel :: модель() -> getItemByParentId ($ someVariable)Вложение CActiveRecord

Но теперь у меня есть 3 очень похож на SomeModel модели, так что я хочу поставить общие методы к одному классу

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

    public function getItemByParentId($parentId) 
    { 
     $criteria=new CDbCriteria; 
     //some criteria 

     return self::model()->findAll($criteria); 
    } 
} 

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

    public function tableName() 
    { 
     return '{{first_table}}'; 
    } 
} 

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

    public function tableName() 
    { 
     return '{{second_table}}'; 
    } 
} 

Но получить ошибку

в таблице «CommonModel» для активного класс записи "CommonModel" не может найти в базе данных.

Что не так?

ответ

0

Попробуйте изменить:

public function getItemByParentId($parentId) 
{ 
    $criteria=new CDbCriteria; 
    //some criteria 

    return static::model()->findAll($criteria); 
} 
+0

Я уже пытался, но получить «SomeController и его поведение не имеет метод или замыкание под названием„модель“:( – dr0zd

+0

метода' getItemByParentId' вы должны размещенный в 'CommonModel', и от контроллера, используя: SecondModel :: model() -> getItemByParentId ($ id); – CreatoR

+0

Да, это правильно. У меня то же самое. – dr0zd

Смежные вопросы