laravel 中删除多条记录

Posted

技术标签:

【中文标题】laravel 中删除多条记录【英文标题】:Delete multiple records in laravel 【发布时间】:2016-06-10 00:40:13 【问题描述】:

只删除一条记录我意识到这个 ajax

var borrar = confirm("¿Realmente desea eliminarlo?");
          if (borrar) 
          
            var token = document.getElementById('token').value;
            $.ajax(
                headers: 'X-CSRF-TOKEN': token,
                dataType: "json",
                data: radicado: radicado,
                url:   ip+'/eliminarRadicado/delete/'+radicado,
                type:  'get',
                beforeSend: function()
                    ,
                success: function(respuesta)
                    alert(respuesta);
                ,
                error: function(xhr,err) 
                    alert("Error");
                
            );
          

通过 $get 发送我删除文件并运行此路由的记录的 id:

Route::get('eliminarRadicado/delete/id', 'RadicadoController@destroy');

最终到达驱动程序并执行删除功能

public function destroy($id)

    \App\Radicado::destroy($id);
    return response()->json(['Documento eliminado']);

删除我发送的多个记录 (id) 有什么不同。有什么想法吗?

【问题讨论】:

【参考方案1】:

您不应使用GET 动词发送删除请求。相反,您应该使用语义正确的DELETE 动词。


使用您当前的方法,发送 X-CSRF-TOKEN 标头不会做任何事情,因为 Laravel 不会检查读取请求的 CSRF 令牌(GETHEAD)。相反,您应该使用 DELETE 请求将要删除的所有 ID 作为参数传递,如下所示:

var ids = [1, 10, 17]; // Use your own logic to set the array of the IDs here

$.ajax(
    headers : 'X-CSRF-TOKEN': token ,
    dataType: "json",
    data    :  ids: ids ,                   // Pass IDs array
    url     : ip + '/eliminarRadicado/delete',
    type    : 'delete',                       // Send a delete request

    beforeSend: function () 
    ,

    success: function (respuesta) 
        alert(respuesta);
    ,

    error: function (xhr, err)  
        alert("Error");
    
);

然后将您的路线定义更改为:

Route::delete('eliminarRadicado/delete', 'RadicadoController@destroy');

并且在您的 destroy 控制器方法中使用通过请求接收到的 ID 数组:

use Illuminate\Http\Request;

...

public function destroy(Request $request)

    \App\Radicado::destroy($request->input('ids'));

    return response()->json(['Documento eliminado']);

现在您可以使用同一请求传递一个或多个要删除的 ID 数组。

【讨论】:

以上是关于laravel 中删除多条记录的主要内容,如果未能解决你的问题,请参考以下文章

Laravel,如何在 HTML 表格中输出相同 ID 的多条记录?

Laravel 从一个表单中插入多条记录

laravel 多条记录到一条记录....但是如何?

使用 Laravel 一次插入多条记录

防止 Laravel 向数据透视表添加多条记录

仅当一个字段作为数组提供时,Laravel Eloquent 才插入多条记录