返回指定AR类的警予2.0静态模型(Returns the static model of the

2019-10-21 22:07发布

我想建立使用YII 2博客应用程序,我使用tbl_lookup表来存储整数值和由其他数据对象所需的文本表示之间的映射。 我修改查找模型类,如下所示,以更容易地访问表中的文本数据。 我在这里的代码:

<?php
  namespace common\models;
  use Yii;
?>

class Lookup extends \yii\db\ActiveRecord
{
private static $_items=array();

public static function tableName()
{
    return '{{%lookup}}';
}   

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

    /**
 * @inheritdoc
 */
public function rules()
{
    return [
        [['name', 'code', 'type', 'position'], 'required'],
        [['code', 'position'], 'integer'],
        [['name', 'type'], 'string', 'max' => 128]
    ];
}

/**
 * @inheritdoc
 */
public function attributeLabels()
{
    return [
        'id' => 'ID',
        'name' => 'Name',
        'code' => 'Code',
        'type' => 'Type',
        'position' => 'Position',
    ];
}

private static function loadItems($type)
{
    self::$_items[$type]=[];
    $models=self::model()->findAll([
        'condition'=>'type=:$type',
        'params'=>[':type'=>$type],
        'order'=>'position',
    ]);

    foreach ($models as $model)
        self::$_items[$type][$model->code]=$model->name;
}

public static function items($type)
{
    if(!isset(self::$_items[$type]))
        self::loadItems($type);
    return self::$_items[$type];
}

public static function item($type, $code)
{
    if(!isset(self::$_items[$type]))
        self::loadItems ($type);
    return isset(self::$_items[$type][$code]) ? self::$_items[$type][$code] : false;
}

}

但我得到了一些错误,当我想回到静态模型类

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

没有人帮助我吗? 这里是我的错误。 或有人在这里有一些教程使用Yii 2,使博客应用程序? 谢谢。

Answer 1:

在Yii2你不使用model()方法。 因为,Yii2和Yii1是不同的(看更多https://github.com/yiisoft/yii2/blob/master/docs/guide/intro-upgrade-from-v1.md )。 在Yii1提供这样的数据:

Post::model()->find($condition,$params);

在Yii2提供这样的数据:

Post::find()->where(['type' => $id])->all(); 

查看更多https://github.com/yiisoft/yii2/blob/master/docs/guide/db-active-record.md

删除model在模型中:

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

并改变loadItems方法:

private static function loadItems($type)
{
    self::$_items[$type]=[];
    $models=self::findAll([
        'condition'=>'type=:$type',
        'params'=>[':type'=>$type],
        'order'=>'position',
    ]);

    foreach ($models as $model)
        self::$_items[$type][$model->code]=$model->name;
}


文章来源: Returns the static model of the specified AR class in yii 2.0
标签: php yii2