当前位置: 首页 > 知识库问答 >
问题:

如何在Laravel 4.1中使用多态多对多关系?

康泽宇
2023-03-14

作为这个问题的一个例子,让我使用电视节目、电影和演员。每个电视节目和电影都有多个演员,每个演员都在一个或多个电视节目和/或电影中。如果我在他们之间建立一个多态的多对多关系,我似乎可以分别查询一个演员的所有电视节目和所有电影,但尽管我可以用谷歌搜索,我还没有找到一种方法来查询一个演员的所有电视节目和/或电影在一个集合中的联合。这难道不是多对多多态关系的有用之处吗?

如果事实证明这确实是可能的,我可能会添加注释,包括表和模型设置,以实现这一点,因为我还不能让它工作。如果这是不可能的,你能帮我理解这种关系的目的吗,因为我显然不明白。在我看来,如果没有这个查询,使用两个多对多关系,我将一无所获。

共有1个答案

慕容烨
2023-03-14

我不确定它是否能解决您的问题,但您应该能够通过使用merge在一个集合中同时获得电视节目和电影

演示的示例模型

class actor
{
    public function tv_shows()
    {
        return ...
    }
    public function movies()
    {
        return ...
    }
}

您可以这样组合它们:

actor::get(1)->movies->merge(actor::get(1)->tv_shows);

这将返回单个电影和电视节目集。

为了简化操作,请在actor类中创建以下函数

public function tvAndMovies()
{
    return self::movies->merge(self::tv_shows);
}

希望这能有所帮助

 类似资料:
  • 比如我们有一张文章表,一张书籍表,一张标签表,一张标签关联表。文章和书籍共用标签库。 mysql> desc tb_article; +---------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra

  • 问题内容: 在关系数据库中,我有一个用户表,一个类别表和一个用户类别表,它们之间存在多对多关系。在Redis中具有这种结构的更好形式是什么? 问题答案: 使用Redis,关系通常由集合表示。一组可用于表示单向关系,因此每个对象需要一组以表示多对多关系。 尝试将关系数据库模型与Redis数据结构进行比较是毫无用处的。使用Redis,所有内容均以非规范化方式存储。 例: 一旦有了此数据结构,就可以使用

  • 问题内容: 我相信标题是不言而喻的。如何在PostgreSQL中创建表结构以建立多对多关系。 我的例子: 问题答案: SQL DDL(数据定义语言)语句如下所示: 我强烈建议您这样做,因为产品名称几乎不是唯一的(不是很好的“自然键”)。此外,强制使用唯一性并在外键中引用该列通常比使用存储为或的字符串便宜(4字节(甚至8字节))。 不要使用基本数据类型的名称作为 标识符 。尽管这是可能的,但这是不好

  • 问题内容: 我正在制作一个具有多对多关系的SQLite数据库,并使用以下代码将其分解为两个一对多的关系 错误: 有谁知道我该如何解决这个错误? 问题答案: 查看文档; 它向您表明,如果您在字段定义本身上指定了外键,则不应使用关键字本身。此外,正如 CL 指出的那样,您使用了太多逗号 。 ,即使单独指定约束,外键名称也不应放在括号中。 该语句可以满足您的要求: 还要注意,如果MODULEID是表MO

  • 我对MongoDB中的多对多关系实现有一个特定的问题。 我收集了歌曲和艺术家的作品(数百万份文档)。在这里,这首歌可以被许多艺术家演唱,一个艺术家可以唱许多首歌。所以我在两个集合中都遵循了文档引用的方法。像这样... 1.歌曲集:- 2.艺术家收藏:- 但这里的问题是,在删除艺术家的同时,我必须从歌曲所有文档中的艺术家数组中删除一个艺术家,如果该文档中有艺术家,反之亦然。这会导致原子性问题。我如何

  • 比如我们有一张文章表,一张书籍表,一张评论表。文章和书籍的评论记录都在同一张评论表中。 mysql> desc tb_article; +---------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra