2013-05-26 36 views
-2

我從CActiveRecord
讓利擴展的模型表示的類名是SomeModel和對象是$foo的CActiveRecord迭代不尊重虛擬屬性

$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"; 
    } 

如何使當我這樣做迭代列出的image財產?

回答

3

你不能迭代這樣的模型。試試這個:

foreach ($foo->getAttributes() as $key => $value) { 
    // Do stuff 
} 
+0

是否有任何理由爲什麼我不能迭代模型?因爲如果我這樣做,它是從數據庫領域輸出屬性,但不是我手動/虛擬創建的屬性 – GusDeCooL

+0

主要是,CActiveRecord類沒有創建爲迭代器/可遍歷對象。所以在這種情況發生之前,你必須這樣做。 – lucifurious