通过中间关系访问模型

时间:2018-01-16 00:06:43

标签: laravel eloquent

我想使用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 个答案:

答案 0 :(得分:1)

games表需要giveaway_games的外键。在下面的示例中,我坚持使用_id后缀作为外键字段的Laravel默认值。

<强>类

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

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

     

GiveAway 有很多游戏通过 GiveawayGames

     

或更抽象:

     

模型有很多参数1 参数2

<强>模式

赠品:

  • id
  • 名称

giveaway_games:

  • ID
  • giveaway_id

游戏:

  • ID
  • 名称
  • giveaway_games_id

请注意外键的自定义名称:

如果您被迫自定义外键名称,例如使用giveawayID而不是giveaway_id,则可以将自定义名称指定为hasManyThrough()方法的第3个参数:< / p>

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

如果您另外自定义了id字段的名称,请告诉uuid您可以在第4个参数中指定:

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