2016-12-06 45 views
2

我正在研究一个基于Laravel 5.3和Backpack CRUD的项目。我的项目有大约8种不同的内容类型(新闻,页面,投资组合,活动,团队,视频,画廊,工作)。多种内容类型的n-n关系

我需要能够为每种内容类型(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个标签表(?)

任何帮助或建议将不胜感激。

回答

0

我觉得一个干净的方法是:

  • 创建不同的模型,每个标签使用,因此NewsTagPageTagPortfolioTag等,只会延长Tag模型,并使用global scope过滤content_type_id之后的结果;

  • NewsTag使用背包select2_multiple字段,PageTagPortfolioTag等;将使用您在Tag模型上设置的任何内容(包括table属性,增变器,访问器等);

干杯!