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) から呼び出すと正しく機能します

しかし今、私は SomeModel モデルに非常によく似たモデルを 3 つ持っているので、共通のメソッドを 1 つのクラスに入れたいと考えています。

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 に答える