每個CActiveRecord
實例(或CModel
實例)都有一個名爲attributes
的獲取/設置器,可以設置所有屬性。這會導致衝突,因爲生成的粗股代碼使用期望其如前所述的attributes
屬性。
控制器確實是這樣的:
$model->attributes=$_POST['ModelClassName'];
// or
$model->attributes=$_GET['ModelClassName'];
這是爲了建立人的(安全)一次的屬性模型。相反,這會覆蓋舊數據庫模型的數據庫屬性attributes
。
這反過來導致您描述的錯誤,因爲$_GET['ModelClassName']
和$_POST['ModelClassName']
通常包含數據數組。
我想最簡單的解決將是直接調用setter函數爲「正常」 attributes
行爲,這將導致東西代替上述行類似如下:
// in the controller
$model->setAttributes($_POST['ModelClassName']);
// and
$model->setAttributes($_GET['ModelClassName']);
我想休息生成的CRUD代碼(視圖)可以並且應該保持不變以使其工作。
如果你想知道如何和爲什麼這工作,最好做一些research到__get
和__set
神奇功能,以及它們如何在Yii框架中。
如果它是單個表中的單個列,您可以重命名嗎? –
我們需要看到產生這個錯誤的代碼。您應該可以打開配置文件中的錯誤日誌,以便您可以確切地查看它所指的文件/行號。 – Pitchinnate