Я хочу получить всех пользователей и связанные роли в одну таблицу в laravel. но я не мог продолжить, потому что я получаю сообщение об ошибке
Это моя функция контроллера
public function index(){
if (Auth::user()->isAdmin==1){
$users = User::with('roles')->get();
return view('users', campact($users));
} else {
abort(403, 'Unauthorized action.');
}
}
Это функция ролей моей модели пользователя
public function roles()
{
return $this->belongsToMany(Role::class, 'role_users');
}
Это функция пользователей моего ролевого класса
public function users()
{
return $this->belongsToMany(User::class,'role_users');
}
Это моя таблица данных
@foreach ($users as $user)
<tr>
<td>{{ $user->id }}</td>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
<td>
<form method = "post">
{{ csrf_field() }}
<div class = "form-group">
<select class = "form-control" data-id = "{{$user->id}}" id = "role" name = "role">
<option value = "0">Select a Role</option>
@foreach ($users->roles as $role)
<option value = "{{ $role->id }}">{{ $role->name }}</option>
@endforeach
</select>
</div>
</form>
</td>
<td>{{ $user->created_at }}</td>
<td>{{ $user->updated_at }}</td>
<td><div class = "form-group">
<form method = "post" id = "userActivate">
{{ csrf_field() }}
<label>
<input type = "checkbox" class = "flat-red isActive" data-id = "{{$user->id}}" @if ($user->isActive) checked @endif>
</label>
</form>
</div>
</td>
<td>
<form id = "userDelete" method = "post" >
{{ csrf_field() }}
<button type = "button" id = "delete" data-id = "{{$user->id}}" class = "btn btn-block btn-danger btn-flat">Delete</button>
</form>
</td>
</tr>
@endforeach
Пожалуйста, помогите мне решить эту проблему.
campact должен (я предполагаю) быть compact?
Пожалуйста, предоставьте сообщение об ошибке. У вас есть стол role_user?
Campact исправлен на компактный. но та же ошибка под названием «Неопределенная переменная: пользователи (View: /var/www/html/laravel/resources/views/users.blade.php)»
Да, у меня есть таблица пользователей ролей, и я хочу получить роли, связанные с каждым пользователем
пожалуйста, проверьте мой ответ;)






Отредактируйте эту строку:
return view('users', campact($users));
к:
return view('users', compact('users'));
Появляется ошибка «Свойство [роли] не существует в этом экземпляре коллекции. (Просмотр: /var/www/html/laravel/resources/views/users.blade.php)»
Измените код вашего контроллера
public function index(){
$users = User::with('roles') // Eager loading
->get();
return view('users')->with('users', $users);
}
Затем измените код лезвия с
@foreach ($users->roles as $role)
<option value = "{{ $role->id }}">{{ $role->name }}</option>
@endforeach
к
@if (count($user->roles) > 0)
@foreach ($user->roles as $role)
<option value = "{{ $role->id }}">{{ $role->name }}</option>
@endforeach
@endif
Несмотря на то, что у меня возникла ошибка «Неопределенное свойство: stdClass :: $ roles (View: /var/www/html/laravel/resources/views/users.blade.php)»
давайте попробуем вернуть $user в ваш контроллер, затем посмотрим результат
Затем снова появляется ошибка под названием «Неопределенная переменная: пользователи (View: /var/www/html/laravel/resources/views/users.blade.php)»
как называется ваша миграция для отношения многие ко многим?
2018_12_10_060451_create_role_users_table
попробуйте изменить свой код, как этот public function index(){ return User::with('roles')->get(); }
[{«id»: 1, «name»: «Анушка Дешан», «isAdmin»: 1, «email»: «[email protected]», «email_ Verified_at»: null, «i sActive» : 1, «created_ at»: «2018-11-21 09:41:11», «updated_at»: «2018-12-07 07:56:43», «roles»: []}, {«id ": 2," name ":" Charith Athukorala "," isAdmin ": 2," email ":" [email protected] ", " email_verified_at ": null," isActive ": 1," c reated_at ":" 2018-11-21 09:57:40 "," updated_at ":" 2018-12-06 04:29:32 "," roles ": []}, {" id ": 19, "name": "Анушка .......... я получил вот такой результат в браузере.
давайте попробуем изменить ваш индексный код .. затем измените код foreach с моим кодом $users = User::with('roles')->get(); return view('users')->with('users',$users);
Джеймс! Он работает без заполнения раскрывающегося списка. Как я могу заполнить все роли и выбрать раскрывающийся элемент со связанной ролью для каждого пользователя
Вы имеете в виду, что он работает без использования опции выбора? Я снова обновил свой ответ в моем @foreach, давайте еще раз проверим его
да. Как я могу заполнить все роли и одновременно выбрать выпадающий элемент со связанной ролью для каждого пользователя
вам нужно добавить пользователя с ролями ... затем сохранить его в своей базе данных ... затем попробуйте снова показать данные ... Я думаю, что роли с отображением у каждого пользователя
Я сделаю то же самое и большое спасибо
Что вы хотите получить из таблицы
role_user?