1

我目前正在扩展 yii-s 管理扩展,yiiadmin。

在模型创建视图中获取列表框多选字段的最简单方法是什么,它将显示多对多关系,例如我有一个包含这些文章类别关系的“数据透视表”以及文章和类别表。

我已经在模型中定义了这些关系,我什至设法将一些其他关系放入列表视图,例如通过 Article 表中的 author_id 字段获取的 Author.name。

现在,我希望文章创建表单包含多个选择列表框,该列表框会自动将文章所属类别的多个选择保存到此数据透视表中。

因此,这些将是一篇文章提交到 article_category 数据透视表的多个条目/行。

同时,Article 表本身不包含任何引用类别的字段。因此,数据透视表获取文章的 id 属性并将其与类别(另一个模型/表)的 id 连接起来,并从中生成一行。

因此,例如,我有这些表/模型:

文章 >>> id | 标题 | 作者 | 文本


分类 >>> id | 姓名 | 描述


文章分类 >>> id | article_id | 类别ID


我想用来自 yiiadmin 的文章创建视图/表单的多个选择列表框中的多行填充第三个数据透视表(通常只通过一次提交)。

我还想自动将类别表中的 category.name 呈现到此列表框中,与类别 id-s 适当相关,以便我可以显示类别表中的名称,并通过选择和提交使用类别的 id-s 填充数据透视表(因此不是名字)

这可能吗,这样做的方法是什么?

4

1 回答 1

1

试试这个扩展来更轻松地保存 MANY_MANY 关系:
http
://www.yiiframework.com/extension/cadvancedarbehavior/(gii-template-collection 使用它并提供一个 CRelated 小部件来为您创建填充的关系表单元素,它工作得很好好我试过了: http ://www.yiiframework.com/extension/gii-template-collection/ )

这个声称对多对多关系做类似的事情: http ://www.yiiframework.com/extension/save-relations-ar-behavior/

此外,自己编写代码也相当容易。只需使用与之相关的模型填充 CHtml::listBox,然后在操作中遍历它们并使用一些简单的 SQL 将关系添加到“数据透视”表。或者为数据透视表创建一个模型,然后您也可以使用常规的 save() AR 方法。您也可以在 afterSave() 模型事件中执行此操作,而不是控制器操作。

于 2010-08-09T22:48:21.327 回答