Php CActiveRecord迭代不考虑虚拟属性
我有一个从Php CActiveRecord迭代不考虑虚拟属性,php,object,yii,Php,Object,Yii,我有一个从 假设类的名称是SomeModel,对象是$foo $foo = SomeModel::model()->findByPk(1); 然后,我在该模型上创建了虚拟属性 $foo->setImage('testing.jpg'); 当我调用属性/状态时,它工作正常: var_dump($foo->image); // output testing.jpg 但是当我对模型进行迭代时,它没有显示属性 foreach($foo as $key => $value)
假设类的名称是
SomeModel
,对象是$foo
$foo = SomeModel::model()->findByPk(1);
然后,我在该模型上创建了虚拟属性
$foo->setImage('testing.jpg');
当我调用属性/状态时,它工作正常:
var_dump($foo->image); // output testing.jpg
但是当我对模型进行迭代时,它没有显示属性
foreach($foo as $key => $value) {
echo $key .' = '. $value."\n";
}
当我进行迭代时,如何使
图像
属性列出?您不能迭代这样的模型。请尝试以下方法:
foreach ( $foo->getAttributes() as $key => $value ) {
// Do stuff
}
有什么原因不能像这样迭代模型吗?因为如果我这样做,那么从数据库字段输出属性是肯定的,但不是我手动/虚拟创建的属性。主要是,CActiveRecord类不是作为迭代器/可遍历对象创建的。所以,在这之前,你必须做上述的事情。