嵌套的CActiveRecord

时间:2013-10-15 13:46:10

标签: activerecord yii

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)

但是现在我有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”不能   可以在数据库中找到。

有什么问题?

1 个答案:

答案 0 :(得分:0)

尝试改变:

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

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