Используя multi_auth из laravel 5.3, я пытаюсь создать кнопку удаления / редактирования / обновления.
Я пытаюсь удалить пользователя из панели администратора, получая информацию из таблицы пользователей.
На самом деле моя первая проблема с функцией уничтожения.
Это мой маршрут уничтожения:
Route::get('{id}',[
'as' => 'admin.destroy',
'uses' => 'AdminHomeController@destroy'
]);
Это мой контроллер от администратора:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\User;
class AdminHomeController extends Controller
{
public function __construct()
{
$this->middleware('admin.user');
}
public function index()
{
$users = User::all();
return view("admin-home")->with('users', $users);
}
public function destroy($id)
{
$users = User::find($id);
$users->delete();
Flash::error('El usuario ' . $users->name . '$ ha sido eliminado con exito!');
return redirect()->route('admin-home');
}
}
Просмотр с кнопкой удаления:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="col-sm-offset-2 col-sm-8">
@if (count($users) > 0)
<div class="panel panel-default">
<div class="panel-heading">
Todos los Usuarios
</div>
<div class="panel-body">
<table class="table table-striped user-table">
<thead>
<th>Nombre:</th>
<th> </th>
<th>Email:</th>
<th> </th>
<th>Acciones:</th>
<th> </th>
</thead>
<tbody>
@foreach ($users as $user)
<tr>
<td> </td>
<td>{{ $user->name }}</td>
<td> </td>
<td>{{ $user->email }}</td>
<td> </td>
<td>
<a href="{{ route('users.destroy', $user->id) }}" onclick="return confirm('¿Seguro que desea eliminar este Usuario?')" class="btn btn-danger"><i class="glyphicon glyphicon-trash" aria-hidden="true"></i></a>
</td >
<td>
<a href="{{ route('users.edit', $user->id) }}" class="btn btn-info"><i class="fa fa-pencil-square-o" aria-hidden="true"></i></a>
</td>
<td> </td>
</tr>
@endforeach
</tbody>
</table>
</div>
@endif
</div>
</div>
</div>
</div>
@endsection
Спасибо!
Проверьте $ id в
$users = User::find($id);
$users->delete();
Объект $ users имеет значение null, поскольку пользователь не найден в базе данных или $ id неверен
После игры с кодом я нашел это полезным:
В представлении у меня было 2 кнопки удаления и редактирования, я изменил:
{{route (‘users.destroy’, $ user-> id)}}
{{route (‘users.edit’, $ user-> id)}}
за:
{{url (‘users.destroy’, $ user-> id)}}
{{url (‘users.edit’, $ user-> id)}}
И теперь я могу видеть кнопки без проблем, проблема теперь та же, что и раньше, функция уничтожения дает мне ошибку.
Это маршрут, который вызывает ошибку:
Route::get('{id}',[
'as' => 'admin.destroy',
'uses' => 'AdminHomeController@destroy'
]);
Ошибка: нет результатов запроса для модели [Приложение \ Пользователь].
Это моя модель пользователя:
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
И до сих пор не могу найти проблему .. @edwardstock