我在嘗試 ->write() 一個名為“ModelSheet”的 DataObject 時遇到了這個例外,它說名稱應該是 Models\ModelSheet 而不是 ModelSheet(我在同一個命名空間(Models)下,甚至嘗試使用陳述)
uj5u.com熱心網友回復:
嗨 Guilherme,歡迎來到 stackoverflow,
似乎保存到您的資料庫記錄的 ClassName 與您的 PHP 類名不匹配。
當更改類名時(添加或更改命名空間就是更改類名),您需要更新資料庫以反映此更改,因為類名保存在資料庫中,因此 Silverstripe 知道哪個 PHP-Object 與資料記錄相關。
如果您使用Silverstripe 的升級工具,您的模塊目錄中應該有一個.upgrade.yml(例如在 app 或 mysite 中)。如果沒有,您可以手動添加它(參見例如https://github.com/wernerkrauss/silverstripe-onepage/blob/master/.upgrade.yml作為隨機示例)。結構就像
mappings:
OldClassName: My\Namespace\NewClassname
之后,您只需要運行dev/build/?flush并更新您的資料庫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/478354.html
下一篇:如果變數存在,如何保留它
