【问题标题】:Creating Dynamic attributes,properties in model class - YII Framework在模型类中创建动态属性、属性 - YII 框架
【发布时间】:2018-10-26 14:32:32
【问题描述】:

我正在尝试从一个表值作为列在模型类中创建动态属性、属性和规则。

假设我有一个名为“XXX”的表,其中包含“名称”列,现在我想使用存储在 DB 中的名称值创建具有规则、属性和属性的模型类。

我是 YII 框架的新手,有人可以对此提出想法吗?

【问题讨论】:

  • 我会嘲笑你的正确方向,给我 10 分钟

标签: yii


【解决方案1】:

这是我快速模拟的东西,我希望它指向正确的方向

$sql="SELECT 'Name' FROM XXX";
$names =$connection->createCommand($sql)->query()->readAll();

$myDynamicObject = new DynamicModel($names);

class DynamicModel extends CModel
{
    protected $_members = array();


    public function __construct($nameFields)
    {
        foreach ($nameFields as $member) {
            $this->_members[$member] = null;
        }

        parent::__construct();
    }

    /**
     * @return array validation rules for model attributes.
     */
    public function rules()
    {
        $allMembers = implode(', ', array_keys($this->_members));
        return array(
            array($allMembers, 'required'),
        );
    }

    public function __get($attribute)
    {

        if (in_array($attribute, array_keys($this->_members))) {
            return $this->_members[$attribute];
        } else {
            return parent::__get($attribute);
        }
    }

    public function __set($attribute, $value)
    {
        if (in_array($attribute, array_keys($this->_members))) {
            return $this->_members[$attribute] = $value;
        } else {
            return parent::__set($attribute, $value);
        }
    }

    public function getAttributes()
    {
        return $this->_members;
    }

    public function setAttributes($attributes)
    {
        $this->_members = $attributes;
    }

}

【讨论】:

  • 我收到此错误致命错误:第 56 行的 D:\xampp\htdocs\ccvv7\protected\models\DynamicModel.php 中找不到类 'COutputProcessor'
  • @Manadh : 不知道为什么,我认为这与我编写的代码没有任何关系
  • 前两行?正如我所说,不要将它用作脚本,以它为灵感来制作自己的脚本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-08
  • 2017-07-14
  • 1970-01-01
  • 2019-05-02
  • 2018-12-10
  • 1970-01-01
相关资源
最近更新 更多