【问题标题】:Delete a value from a Laravel 5.4 database从 Laravel 5.4 数据库中删除一个值
【发布时间】:2017-10-06 04:21:27
【问题描述】:

我正在尝试从 Laravel 5.4 中的数据库中删除值。这是我的代码:

UserController.php:

public function destroy($id)
{

 $user = User::find($id);
 $user->delete();
 return redirect()->route('user.index');
}

View.blade.php

<div class="table-responsive">
    <table id="datatable-account"
           class="table table-vcenter table-hover table-condensed table-bordered text-center">
        <thead>
        <tr>
            <th class="text-center">Username</th>
            <th class="text-center">Last Name</th>
            <th class="text-center">First Name</th>
            <th class="text-center">Role</th>
            <th class="text-center">Email</th>
            <th class="text-center">Action</th>
        </tr>
        </thead>
    </table>

</div>

<script type="text/javascript">

$('#datatable-account').DataTable({
    processing: true,
    serverSide: true,
    "ajax": '{!! url('api/user') !!}',
    "columns": [
        {data: 'username', name: 'username'},
        {data: 'lastname', name: 'lastname'},
        {data: 'firstname', name: 'firstname'},
        {data: 'role', name: 'role',
            render: function (data, types, full, meta) {
                if (data == 0){ return 'Admin' } else return 'User';}
        },
        {data: 'email', name: 'email'},
        {data: 'id', name: "id",
            render: function (data, types, full, meta) {
                return '<a href="{{ url('delete')}}" data-method="delete" button type="button" class="btn btn-danger btn-xs delete-user" name="delete"><i class="fa fa-times"></i> Delete</button></a>';
            }
        }
    ]
});

Routes.php

Route::post('/delete', ['as' => 'delete', 'uses' => 'UserController@destroy']);

当我单击删除按钮时,没有出现错误,但数据库中的值仍然存在。我错过了什么。提前致谢。

【问题讨论】:

  • 你遇到了什么错误?
  • 不幸的是,我没有收到错误。它只是不执行删除。
  • 你试过不用ajax了吗?
  • 您似乎有 ajax 错误。初始化删除按钮后尝试签入控制台。
  • 你检查过你的ajax方法 POST/GET ,请用 POST 设置它,因为你的 laravel 路由在 POST 中。或者我们有其他解决方案来设置你的 Laravel 路线为“任何”。

标签: laravel laravel-5.4 destroy


【解决方案1】:

更新您的route,使请求方法为DELETE,并按照@Rodrane 的建议附加user_id

Route::delete('/delete/{id}', 'UserController@destroy');

在您的view 中,然后将删除链接更新为如下所示。

return '<a href="{{ url('delete'.$id)}}" data-method="delete" button type="button" class="btn btn-danger btn-xs delete-user" name="delete"><i class="fa fa-times"></i> Delete</button></a>';

【讨论】:

  • 现在它说 undefined variable user view.php return ' 删除'; controller.php public function destroy($id) { $user = User::find($id); $用户->删除();返回视图 ('user.index', compact('user')); }
  • 并确保您知道您在UsersController 中为show 方法返回了哪个object,因为在您的控制器中触发了上述错误
  • @LittlePhild 这会失败,因为你还没有命名路由,所以使用route() helper 是行不通的。你应该命名你的路线,或者改用url()
【解决方案2】:

已解决。我创建了另一个控制器并使用了代码

<form action="{{route('UserController.destroy',$sub->id)}}" method="post">
                        <input type="hidden" name="_method" value="delete">
                        <input type="hidden" name="_token" value="{{ csrf_token() }}">
                        <input type="submit" class="btn btn-sm btn-danger" onclick="return confirm('Se sicuro di voler cancellare il subscriber?');" name="name" value="Elimina">
                    </form>

当 $sub 变量是表“datatable-account”中的 foreach 变量时。 非常感谢您的帮助!

【讨论】:

    【解决方案3】:

    答案已更新 我认为您需要更新您的代码,例如:

    Route.php

    Route::get('/delete/{id}','UserController@destroy')->name('delete');
    

    View.blade.php 只需更新您删除链接代码,如下所示:

    return '<a href="{{ route('delete', [$id])}}" data-method="delete" button type="button" class="btn btn-danger btn-xs delete-user" name="delete"><i class="fa fa-times"></i> Delete</button></a>';
    

    【讨论】:

      猜你喜欢
      • 2017-11-29
      • 2018-03-31
      • 2019-04-02
      • 2019-02-07
      • 2015-10-13
      • 2019-03-30
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      相关资源
      最近更新 更多