在null / AdminHomeController.php第26行调用成员函数delete():

时间:2017-02-16 16:04:45

标签: php function authentication laravel-5.3 crud

使用laravel 5.3中的multi_auth尝试删除/编辑/更新按钮。

我试图从管理仪表板中删除用户从users表中检索信息。 实际上我的第一个问题是破坏功能。

这是我的破坏路线:

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>&nbsp;</th>
                                    <th>Email:</th>
                                    <th>&nbsp;</th>
                                    <th>Acciones:</th>
                                    <th>&nbsp;</th>
                                </thead>
                                <tbody>
                                    @foreach ($users as $user)
                                        <tr>
                                            <td>&nbsp;</td> 
                                            <td>{{ $user->name }}</td>  
                                            <td>&nbsp;</td> 
                                            <td>{{ $user->email }}</td> 
                                            <td>&nbsp;</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>&nbsp;</td>
                                        </tr>
                                    @endforeach
                                </tbody>
                            </table>
                    </div>
                @endif
            </div>
        </div>
    </div>
</div>
@endsection

谢谢!

2 个答案:

答案 0 :(得分:0)

检查$ id in $users = User::find($id); $users->delete();

对象$ users为null,因为在数据库中找不到用户或$ id不正确

答案 1 :(得分:0)

在玩完代码之后我发现这个有用了: 在视图中我有2个按钮,删除和编辑,我改变了:

{{route('users.destroy',$ user-&gt; id)}} {{route('users.edit',$ user-&gt; id)}}

有:

{{url('users.destroy',$ user-&gt; id)}} {{url('users.edit',$ user-&gt; id)}}

现在我可以看到按钮没有任何问题,现在的问题和以前一样,函数destroy给我一个错误。 这是导致错误的路线:

Route::get('{id}',[
    'as' => 'admin.destroy',
    'uses' => 'AdminHomeController@destroy'
]);

错误:模型[App \ User]没有查询结果。

这是我的用户模型:

<?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