答案就在你的文檔的鏈接,model()
是一個類級別的方法,並且它:
返回指定AR類的靜態模型。返回的模型是AR類的靜態實例。它提供了調用類級別的方法
比方說,你這樣做(類似於靜態類的方法的東西。):$model=CActiveRecord::model('Project');
,然後使用該$model
你可以調用所有的CActiveRecord的一流水平的方法,像:
$allModels = $model->findAll(); // will give you all the models of Project
$someModel = $model->findByPk('pkValue'); // will give you the row with primary key value = pkValue
$model->deleteAll(); // will delete all the records of Project
// and so on
編輯:
而且this post在論壇上說:(一流水平與靜態之間的區別滿足部門首長)
職業等級的方法是有效的靜態方法但與能夠使用繼承利益。也就是說,您可以在子類中重寫Class Level Method的操作,而如果使用靜態方法,則無法重寫它。 .... 所以,一般來說,你應該使用類級別的方法,而不是靜態方法,因爲它給你繼承的好處,儘管它可能會感覺有點奇怪。然後你使用$ class :: model() - > method()來調用它們。
和Yii一起工作了幾個月,我發現ActiveRecord類同時處理ActiveRecord和Model都很奇怪。對我來說感覺很奇怪。 –