2011-12-17 65 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