如在表字段设置了 class_name 字段,
如,表 product 有两条数据class_name 分别为 GeneralProduct, VirtualProduct
当使用:
$products = Product::model()->findAll();
$products[0] 为 GeneralProduct
$products[1] 为 VirtualProduct
想知道官方是否做了这样的处理,或者插件~
如在表字段设置了 class_name 字段,
如,表 product 有两条数据class_name 分别为 GeneralProduct, VirtualProduct
当使用:
$products = Product::model()->findAll();
$products[0] 为 GeneralProduct
$products[1] 为 VirtualProduct
想知道官方是否做了这样的处理,或者插件~
请参看:CActiveRecord::instantiate()
看到了这个方法,不过代码挺简单,没有看出来怎么用?
qiang,能否针对单表继承,做一下应用的说明教材,谢谢~
protected function instantiate($attributes)
{
$class=get_class($this);
$model=new $class(null);
$model->setScenario('update');
return $model;
}
你可以根据$attributes的值,然后根据你的需求创建你需要的类。
thankyou~
RequestForm
RequestSARForm
RequestSSForm
以上三个模型:
RequestForm 有公共字段 created 创建时间,和id,另外有一个 class_name 字段,标识它的额外字段的模型类名
RequestSARForm 有form_id字段跟RequestForm 对应,另外有一个 subject字段
RequestSSForm 有form_id字段跟RequestForm 对应,另外有一个model_no字段
现在我通过 RequestForm::model()->findAll()查询,
那么我希望得到的 $model 有 id、form_id、class_name,created,
假如是RequestSARForm ,则要得到 subject内容,
假如是RequestSSForm ,则要得到model_no内容,
请问该怎么设置模型?
我目前的模型设置代码:
protected function instantiate($attributes)
{
$class=$attributes['class_name'];
$model=new $class(null);
return $model;
}
如果可以有一套完整的单表继承使用解决访问文档,就好了!!~~希望qiang给予指导
确实教程有点少
这个不需要教程啊。想想就有方法解决了。我前面不是说了吗?jerry应该也会了。