Laravel中的模范关系

时间:2016-04-16 14:31:00

标签: laravel

我有2个控制器&机型:

  1. 用户控制器:(模型关系:$this->hasMany(Hero::Class);

  2. 英雄控制者:每个英雄都有自己的属性,如姓名,力量和生命。 模型关系:($this->belongsTo(User::class);

  3. 每个用户都可以拥有多个英雄。

    这意味着USER ID: 1可能有3个英雄:HERO ID 5, 20, 26.

    我的问题:如何定义这样的关系并让laravel知道如何处理我的user_heroes表? 我正在谈论的关系如下图所示:

    Despired relationship

    如何在我的laravel API中设置这种关系?

1 个答案:

答案 0 :(得分:2)

如果一个用户可以有很多英雄,而一个英雄也可以属于很多用户,那么它就是多对多关系。在Laravel中,多对多关系的倒数也是多对多的关系,它们都由belongsToMany()描述。

https://laravel.com/docs/5.2/eloquent-relationships#many-to-many

所以在你的用户模型中:

public function heros() {
    return $this->belongsToMany(Hero::class);
}

在你的英雄模型中:

public function users() {
    return $this->belongsToMany(User::class);
}

Laravel将假设连接表名为hero_user,2个模型名称为单数,按字母顺序连接。如果您想在图片中使用user_heroes,则需要指定它:

return $this->belongsToMany(Hero::class, 'user_heroes');

(在两种模型方法中)。