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 令牌(GET
和 HEAD
)。相反,您应该使用 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 中删除多条记录的主要内容,如果未能解决你的问题,请参考以下文章