代码之家  ›  专栏  ›  技术社区  ›  Bruno Francisco

通过中间关系访问模型

  •  0
  • Bruno Francisco  · 技术社区  · 8 年前

    我想检索模型 games 使用 giveaway 模型

    giveaway:
    id
    
    giveaway_games:
    id
    gameID
    giveawayID
    
    games:
    id
    name
    

    阅读文档我明白我必须使用 hasManyThrough 但我不确定我是否正确使用了它

    public function gamesNames(){
        return $this->hasManyThrough(Games::class, GiveawayGames::class, 'gameID', 'id');
    }
    

    任何帮助都将不胜感激。

    1 回复  |  直到 8 年前
        1
  •  1
  •   common sense    8 年前

    这个 games 表需要外键 giveaway_games . 在下面的示例中,我使用 _id 外键字段的后缀。

    :

    class GiveAway 
    {
        public function games()
        {
            return $this->hasManyThrough(Games::class, GiveawayGames::class);
        }
    }
    

    作为助记符,您可以阅读 hasManyThrough 作为:

    赠品 有很多 游戏 通过 赠品名称

    或更抽象:

    模型 有很多 参数1 通过 参数2


    架构 :

    赠品:

    • 身份证件
    • 名称

    giveaway\u游戏:

    • 身份证件
    • 赠品id

    游戏:

    • 身份证件
    • 名称
    • giveaway\u games\u id

    外键自定义名称的注意事项:

    如果您被迫自定义外键的名称,如使用 giveawayID 而不是 giveaway_id ,可以将自定义名称指定为 hasManyThrough() 方法:

    return $this->hasManyThrough(Games::class, GiveawayGames::class, 'giveawayID');
    

    如果您另外自定义 id 字段,让我们说 uuid 可以在第4个参数中指定:

    return $this->hasManyThrough(Games::class, GiveawayGames::class, 'giveawayID', 'uuid');