【发布时间】:2018-10-26 14:32:32
【问题描述】:
我正在尝试从一个表值作为列在模型类中创建动态属性、属性和规则。
假设我有一个名为“XXX”的表,其中包含“名称”列,现在我想使用存储在 DB 中的名称值创建具有规则、属性和属性的模型类。
我是 YII 框架的新手,有人可以对此提出想法吗?
【问题讨论】:
-
我会嘲笑你的正确方向,给我 10 分钟
标签: yii
我正在尝试从一个表值作为列在模型类中创建动态属性、属性和规则。
假设我有一个名为“XXX”的表,其中包含“名称”列,现在我想使用存储在 DB 中的名称值创建具有规则、属性和属性的模型类。
我是 YII 框架的新手,有人可以对此提出想法吗?
【问题讨论】:
标签: yii
这是我快速模拟的东西,我希望它指向正确的方向
$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;
}
}
【讨论】: