Laravel 5.3中同一个表的两个关系

时间:2016-09-28 14:18:31

标签: php laravel laravel-5 model eloquent

我使用Laravel构建了一个应用程序,这对我来说很新,并且卡在了模型定义中 我有两个表USERS和ACTIONS。

1)用户可以创建"动作"或许多行动 2)用户也可以是由另一个用户创建的动作的成员。

因此,如果我没有错,第一个关系是一对一关系(用户可以创建许多操作,一个操作只能由一个用户创建) 第二个是多对多(许多用户可以成为许多行动的成员)

我不知道laravel是否允许这样做,或者我错过了什么

感谢大家

1 个答案:

答案 0 :(得分:1)

可以在同一个表之间建立多个关系。

以下关系定义适合您:

class User extends Model {
  public function actions_created() {
    return $this->hasMany(Action::class, 'creator_id');
  }

  public function actions() {
    return $this->belongsToMany(Action::class);
  }
}

class Action extends Model {
  public function creator() {
    return $this->belongsTo(User::class);
  }

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

确保您有 action_user 表来存储用户和操作之间的多对多关系。它应该有3列:id,user_id和action_id。