在我的Yii應用程序中,我有一個非常簡單的模型設置。我使用gii自動生成的代碼創建了基本的CRUD,同時我獲取了適用於我的應用程序的數據。如何讓Yii中的相關模型爲空
所以,我有作者和書籍。一本書屬於作者。
我有一大堆書已經可以輸入 - 但是因爲我還沒有進入作者 - 我的書沒有一個會保存,因爲當我保存「試圖獲取非對象的屬性」時沒有選擇作者 - 儘管沒有讓作者「需要」。
由於我沒有得到我的由作者(這是標題的CSV列表中直表),這是防止我保存任何書籍組織書籍列表。
如何使作者可選?
在我的Yii應用程序中,我有一個非常簡單的模型設置。我使用gii自動生成的代碼創建了基本的CRUD,同時我獲取了適用於我的應用程序的數據。如何讓Yii中的相關模型爲空
所以,我有作者和書籍。一本書屬於作者。
我有一大堆書已經可以輸入 - 但是因爲我還沒有進入作者 - 我的書沒有一個會保存,因爲當我保存「試圖獲取非對象的屬性」時沒有選擇作者 - 儘管沒有讓作者「需要」。
由於我沒有得到我的由作者(這是標題的CSV列表中直表),這是防止我保存任何書籍組織書籍列表。
如何使作者可選?
所以答案比我意識到的要簡單 - 我的關係錯了。而不是「屬於」我需要一個「有一個」。有一個關係允許空值。
在該「規則」的書模型的功能,你應該看到這樣的事情:
array('...','...','author', 'required'),
所有你需要做的就是從陣列中刪除的「作者」屬性,因此它不再是需要。當然這隻有在DB的Book表中的'author'列被標記爲不需要時纔有效。
我希望它可以幫助你,但我恐怕它不會解決你的問題。您收到的錯誤消息「嘗試獲取非對象的屬性」,表明您在提交的表單中存在另一個問題,而不是未設置的必需屬性。如果是這種情況,您可以發佈BooksController的「創建」功能和相關的「_form」視圖以確定發生了什麼問題。
你可以導入你的作者首先,但這可能不會工作,要麼因爲你的CSV不會有它的AUTHOR_ID
如果我是你,我會刪除外鍵(而不是AUTHOR_ID場,只是FK),並導入我的書,然後加入作家和再次進行添加外鍵時,確保數據的完整性,並用它在未來
的Yii如果你不會抱怨
謝謝你的想法 - 恐怕它沒有幫助。我沒有將author_id作爲必填字段。如果我沒有爲圖書設置*有效*作者ID,則在驗證甚至被檢查之前出現上述錯誤。這與關係有關,但我不知道如何讓Yii在相關領域允許「空」值。 – Hippyjim 2011-12-20 23:45:48