多种内容类型的n-n关系

时间:2016-12-06 19:17:46

标签: backpack-for-laravel

我正在开发一个基于Laravel 5.3和Backpack CRUD的项目。我的项目有大约8种不同的内容类型(新闻,页面,投资组合,活动,团队,视频,图库,工作)。

我需要能够为每种内容类型(n-n)添加标签,并且每种内容类型都有自己的特定标签,因此标签不会在内容类型之间共享。

如果我想使用select_multiple或select2_multiple字段类型,我需要8个表用于内容本身,8个数据透视表和8个表用于标记(!)。

显然我想只有一个表格用于标签,但是如果我使用select_multiple或select2_multiple字段类型,我会得到每种内容类型的编辑形式的所有标签。

所以,我的问题是:是否有一种优雅的方法可以过滤select_multiple或select2_multiple字段类型的结果?

我创建了一个包含两种内容类型的简单模式: http://dbdesigner.net/designer/schema/60412

在此示例中,我希望能够在编辑新闻或页面内容时过滤content_type_id上​​的标记列表。所以我只想在页面编辑表单中看到新闻编辑表单中的新闻标签,以及页面标签。

或者我应该按预期使用select_multiple字段类型,并接受8个标记表(?)

非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:1)

我认为干净的方式是:

  • 为每个代码使用创建不同的模型,因此NewsTagPageTagPortfolioTag等只会扩展Tag模型并使用{{{ 3}}在content_type_id;

  • 之后过滤结果
  • 使用NewsTagPageTagPortfolioTag等背包select2_multiple字段;我将使用您在Tag模型上设置的任何内容(包括table属性,mutators,访问者等);

干杯!