所以我正在做一些單元測試和關係裝置。Yii動態模型ID
我動態創建一個模型,如:
$model = CActiveRecord::model('Post');
$post = $model->findByPk(1);
但在那之後,我不能因爲某些原因得到$post->id
。我將問題追溯到CActiveRecord類:
public function __get($name)
{
if(isset($this->_attributes[$name]))
return $this->_attributes[$name];
...
其中$name = "id"
。它說$this->_attributes[$name]
不存在!事實上_attributes
是空的。
我的帖子類沒有定義id
(或任何其他屬性)作爲公共財產,我也不想這樣做。我只是讓AR將它映射到表格列。
我錯過了什麼?
編輯1
我的燈具是常規的Yii燈具 - 沒有什麼特別之處他們。
不同的是我真正加載它們的方式。我擴展了CDbFixtureManager,以便能夠通過重載load()
方法來指定它們應該加載的順序。的實際利率失敗唯一的事情是,在有外鍵燈具我使用以下命令:
'comment1' => array('post_id' => $this->getRecord('Post', 'post1')->id);
這就是失敗。 getRecord
返回實際的Post記錄(因爲我知道Post fixture已經成功加載並存在於數據庫中),但是在->id
部分,我得到關於該屬性不存在的例外。
如果我進入Post
模型並將public $id;
添加到它,那麼一切正常!但我不確定這是否是好的做法,去宣佈所有屬性公開那樣。
你可以發佈你的燈具文件以及你的測試嗎?很難說這是怎麼回事... – acorncom
@acomcom,我在說明中加了編輯1。 –