如何允许Yii中的相关模型为空

时间:2011-12-17 16:45:40

标签: yii

在我的Yii应用程序中,我有一个非常简单的模型设置。我使用了gii自动生成的代码来创建基本的CRUD,同时我获得了应用程序的数据。

所以,我有作者和书籍。一本书属于作者。

我已经有大量的书籍已经进入 - 但由于我还没有进入作者 - 我的书都没有保存,因为当我保存时,我不断获得“试图获得非物体的属性”选择作者 - 尽管没有使作者“必需”。

由于我没有得到作者组织的书籍清单(这是CSV列表中标题的直接列表),这使我无法保存任何书籍。

如何让作者可选?

3 个答案:

答案 0 :(得分:0)

在Book模型的'rules'功能中,您应该看到如下内容:

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

您所要做的就是从数组中删除'author'属性,因此不再需要它。当然,这只有在DB的Book表中的'author'列标记为not-required时才有效。

我希望它可以帮助你,但我担心它不会解决你的问题。您收到的错误消息“试图获取非对象的属性”表明您在提交的表单中有另一个问题而不是未设置的必需属性。如果是这种情况,您可以发布BooksController的“创建”功能和相关的“_form”视图,以确定出现了什么问题。

答案 1 :(得分:0)

你可以先导入你的作者,但这可能不会起作用,因为你的csv中不会有author_id

如果我是你,我会删除外键(不是author_id字段,只是fk)并导入我的书籍,然后添加作者,完成后再次添加外键以确保数据完整性并在将来使用< / p>

如果你这样做,Yii不会抱怨

答案 2 :(得分:0)

所以答案比我意识到的更简单 - 我的关系错了。而不是“属于”我需要一个“有一个”。有一个关系允许空值。