Как обновить эту роль в Laravel 5.8 - PullRequest
0 голосов
/ 07 октября 2019

Я хочу указать роли вместе с подробностями этих ролей, такими как чтение, создание, обновление и удаление. Как изменить данные роли с помощью следующих критериев.

Это мои ожидания: role img

Это моя таблица ролей: таблица ролей

Это моя таблица user_role: Таблица user_role

Мой ответ json после нажатия кнопки Изменить: Ответ json

ЭтоМоя модель пользователя:

public function roles() {
  return $this->belongsToMany('App\Role')->withPivot([
    'rd',
    'cr',
    'up',
    'dl'
  ]);
}

public function hasAnyRoles($roles) {
 return null !== $this->roles()->whereIn('kd_role', $roles)->first();
}

public function hasAnyRole($role) {
  return null !== $this->roles()->where('kd_role', $role)->first();
}

public function karyawan() {
  return $this->hasOne('App\Karyawan', 'nik', 'nik');
}

public function roleUser() {
  return $this->hasMany('App\RoleUser');
}

Это мой контроллер обновлений пользователя:

public function update(Request $request, $id) {
  $user = User::find($id);

  for($i = 0; $i < count($request->roleUser); $i++) {
        $roleUser[] = [
            'role_id'   => $request->roleUser[$i],
            'rd'        => $request->rd[$i],
            'cr'        => $request->cr[$i],
            'up'        => $request->up[$i],
            'dl'        => $request->dl[$i],
            'user_ins'  => auth()->user()->nik,
        ];
    }

    RoleUser::insert($roleUser);

    $user->roles()->sync($request->roleUser);

    // return  json_encode($roleUser);
    return redirect('/users')->with('status', 'Data Berhasil Diperbarui!');
}

И это мое мнение:

<div class="col-sm-10">
    @if ($roles->count())
    @foreach($roles as $role)
    <div class="custom-control custom-checkbox mb-3">
        <div class="row">
            <div class="col-sm-2">
                <input name="roleUser[]" value="{{$role->id}}" {{ $user->hasAnyRole($role->kd_role)?'checked':'' }} id="customCheck{{$role->id}}" class="custom-control-input" type="checkbox">
                <label class="custom-control-label" for="customCheck{{$role->id}}">{{$role->nm_role}}</label>
            </div>
            <div class="col-sm-10">
                {{-- Testing --}}
                <div class="custom-control custom-checkbox col d-inline mr-3">
                    <input value="true" name="rd" class="custom-control-input" {{ ($role['status']->rd == true)?'checked':'' }} id="customCheckR{{$role->id}}" type="checkbox">
                    <label class="custom-control-label" for="customCheckR{{$role->id}}">Read</label>
                </div>
                <div class="custom-control custom-checkbox col d-inline mr-3">
                    <input value="true" name="cr" class="custom-control-input" {{ ($role['status']->cr == true)?'checked':'' }} id="customCheckC{{$role->id}}" type="checkbox">
                    <label class="custom-control-label" for="customCheckC{{$role->id}}">Create</label>
                </div>
                <div class="custom-control custom-checkbox col d-inline mr-3">
                    <input value="true" name="up" class="custom-control-input" {{ ($role['status']->up == true)?'checked':'' }} id="customCheckU{{$role->id}}" type="checkbox">
                    <label class="custom-control-label" for="customCheckU{{$role->id}}">Update</label>
                </div>
                <div class="custom-control custom-checkbox col d-inline mr-3">
                    <input value="true" name="dl" class="custom-control-input" {{ ($role['status']->dl == true)?'checked':'' }} id="customCheckD{{$role->id}}" type="checkbox">
                    <label class="custom-control-label" for="customCheckD{{$role->id}}">Delete</label>
                </div>
                {{-- End Testing --}}
            </div>
        </div>
    </div>
    @endforeach
    @endif
</div>

Спасибо.

1 Ответ

0 голосов
/ 07 октября 2019

Если $request->roleUser равно role ID, тогда ваш код должен быть:

public function update(Request $request, $id) {
    $userRoles= [];
    for($i = 0; $i < count($request->roleUser); $i++) {
        $userRoles[$request->roleUser[$i]] = [
            'rd'        => $request->rd[$i],
            'cr'        => $request->cr[$i],
            'up'        => $request->up[$i],
            'dl'        => $request->dl[$i],
            'user_ins'  => auth()->user()->nik,
        ];
    }

    $user->roles()->sync($userRoles);      
}

Непроверенный код. Пожалуйста, не используйте в производстве без тестирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...