Eloquant的关系belognsTo和hasMany有相同的对象

I have an object Tournament and 2 relations:

  1. A tournament belongs to a user ( the admin who created it)
  2. A tournament hasMany users ( Competitors )

I can distinct one from other with his role ( Admin, competitor )

Can I do that, or should I get conflicted??? If not, how should I do it???

You can do this - you just need to define 2 relations for your Tournament object, e.g.:

class Tournament extends Model {
  public function admin() {
    return $this->belongsTo(User::class, 'admin_id');
  }

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

Your tournament-admin relation key will now be stored in admin_id field of your tournaments table, while tournament-competitor mapping will be stored in user_tournament table - make sure you have one.

You can read more about operating on many-to-many relationships here: http://laravel.com/docs/5.1/eloquent-relationships#many-to-many