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类不是作为迭代器/可遍历对象创建的。所以,在这之前,你必须做上述的事情。