【问题标题】:How do I use a polymorphic many-to-many relationship in Laravel 4.1?如何在 Laravel 4.1 中使用多态多对多关系?
【发布时间】:2014-10-28 01:57:13
【问题描述】:

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

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

【问题讨论】:

    标签: laravel laravel-4 eloquent


    【解决方案1】:

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

    演示示例模型

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

    你可以像这样组合它们:

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

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

    为了让生活更轻松,在你的 actor 类中创建 follow 函数

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

    希望对你有帮助

    【讨论】:

    • 你是对的,它没有回答这个问题,因为你可以用任何两个查询来做到这一点,所以多对多多态关系的目的仍然无法解释,但它确实给出了我现在正在寻找的结果似乎是一种相当干净的方法。谢谢你!
    猜你喜欢
    • 1970-01-01
    • 2017-02-28
    • 2014-04-18
    • 2017-07-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    相关资源
    最近更新 更多