Yii是否有类型型号的内置支持?例如,如果我有一个名为Flashlight,Lock和Folder的类,它们都扩展了我的产品活动记录模型,我想确保它是类型化的类而不是通用的Yii关系,我该怎么做?
目前我正在覆盖__call,我对此并不满意。我觉得这可能是一个普遍的需求。
答案 0 :(得分:2)
基本上,您覆盖模型的instantiate方法以返回所需的类:
// protected/models/Product.php
protected function instantiate($attributes){
switch($attributes['type']){
case 'flashlight':
$class='Flashlight';
break;
case 'lock':
$class='Lock';
break;
case 'folder':
$class='Folder';
break;
default:
$class=get_class($this);
}
$model=new $class(null);
return $model;
}