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


Two relationships to the same table in Laravel 5.3

我用Laravel构建了一个应用程序,这对我来说是新的,在模型定义上卡住了。
我有两个表USERS和ACTIONS。

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

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

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

感谢大家

相同的表之间可以有多个关系。

下面的关系定义应该适合您:

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。