2011-12-17 53 views
0

在我的Yii應用程序中,我有一個非常簡單的模型設置。我使用gii自動生成的代碼創建了基本的CRUD,同時我獲取了適用於我的應用程序的數據。如何讓Yii中的相關模型爲空

所以,我有作者和書籍。一本書屬於作者。

我有一大堆書已經可以輸入 - 但是因爲我還沒有進入作者 - 我的書沒有一個會保存,因爲當我保存「試圖獲取非對象的屬性」時沒有選擇作者 - 儘管沒有讓作者「需要」。

由於我沒有得到我的由作者(這是標題的CSV列表中直表),這是防止我保存任何書籍組織書籍列表。

如何使作者可選?

回答

0

所以答案比我意識到的要簡單 - 我的關係錯了。而不是「屬於」我需要一個「有一個」。有一個關係允許空值。

0

在該「規則」的書模型的功能,你應該看到這樣的事情:

array('...','...','author', 'required'), 

所有你需要做的就是從陣列中刪除的「作者」屬性,因此它不再是需要。當然這隻有在DB的Book表中的'author'列被標記爲不需要時纔有效。

我希望它可以幫助你,但我恐怕它不會解決你的問題。您收到的錯誤消息「嘗試獲取非對象的屬性」,表明您在提交的表單中存在另一個問題,而不是未設置的必需屬性。如果是這種情況,您可以發佈BooksController的「創建」功能和相關的「_form」視圖以確定發生了什麼問題。

+0

謝謝你的想法 - 恐怕它沒有幫助。我沒有將author_id作爲必填字段。如果我沒有爲圖書設置*有效*作者ID,則在驗證甚至被檢查之前出現上述錯誤。這與關係有關,但我不知道如何讓Yii在相關領域允許「空」值。 – Hippyjim 2011-12-20 23:45:48

0

你可以導入你的作者首先,但這可能不會工作,要麼因爲你的CSV不會有它的AUTHOR_ID

如果我是你,我會刪除外鍵(而不是AUTHOR_ID場,只是FK),並導入我的書,然後加入作家和再次進行添加外鍵時,確保數據的完整性,並用它在未來

的Yii如果你不會抱怨

+0

我剛纔看到你想讓作者可選,在這種情況下只需刪除關係,你會好起來的,甚至不需要添加它,去phpmyadmin,打開表格,打開關係視圖,並刪除author_id fk – dimvic 2012-01-01 23:17:41

+0

謝謝,不幸的是我沒有要導入的作者列表,本書的名字通常包含作者(但是在許多格式中,我不能以編程方式將其解決)。沒有pk關係由db強制執行,只是由Yii執行,所以除了Yii關係之外沒有任何東西可以刪除,這會破壞應用程序的其餘部分。到目前爲止,我通過創建一個「未設置」的默認作者來解決它,但這並不理想。 – Hippyjim 2012-01-02 17:15:12