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::model()->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”。

怎么了?

4

1 回答 1

0

尝试改变:

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

    return static::model()->findAll($criteria);
}
于 2013-10-15T14:17:35.843 回答