By far the best Solution:
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
public function roles() {
return $this->belongsToMany(Role::class, 'users_roles', 'user_id','role_id');
}
public function isAdmin() {
return $this->roles()->filter(function (Role $role) {
return $role->name == 'admin';
})->count();
}
Migration:
public function up()
{
Schema::create('users_roles', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
$table->integer('role_id')->unsigned();
$table->foreign('role_id')->references('id')->on('roles');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('users_roles');
}