App\Repositories\Backend\Access\Role\RoleRepository::delete PHP Method

delete() public method

public delete ( Model $role ) : boolean
$role Illuminate\Database\Eloquent\Model
return boolean
    public function delete(Model $role)
    {
        //Would be stupid to delete the administrator role
        if ($role->id == 1) {
            //id is 1 because of the seeder
            throw new GeneralException(trans('exceptions.backend.access.roles.cant_delete_admin'));
        }
        //Don't delete the role is there are users associated
        if ($role->users()->count() > 0) {
            throw new GeneralException(trans('exceptions.backend.access.roles.has_users'));
        }
        DB::transaction(function () use($role) {
            //Detach all associated roles
            $role->permissions()->sync([]);
            if (parent::delete($role)) {
                event(new RoleDeleted($role));
                return true;
            }
            throw new GeneralException(trans('exceptions.backend.access.roles.delete_error'));
        });
    }

Usage Example

 /**
  * @param  Role $role
  * @param  ManageRoleRequest $request
  * @return mixed
  */
 public function destroy(Role $role, ManageRoleRequest $request)
 {
     $this->roles->delete($role);
     return redirect()->route('admin.access.role.index')->withFlashSuccess(trans('alerts.backend.roles.deleted'));
 }