You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8 中 Resource Controllers 资源控制器无法正常工作如何排查?

问题原因
  • 请求方法不匹配:Laravel资源控制器的destroy动作默认绑定DELETE请求,普通<a>标签发起的是GET请求,会被路由匹配到show方法而非destroy方法,删除逻辑无法触发。你可以执行php artisan route:list命令查看所有路由的请求方式与对应动作,确认destroy路由的请求规则。
  • 数据库删除逻辑错误:DB::table('users')->delete($id)不是QueryBuilder的正确用法,delete()方法不需要传递主键参数,需要先通过where条件定位到目标记录再执行删除操作。
解决办法

1. 调整前端请求方式

Laravel支持表单方法伪造,使用POST表单配合@method('DELETE')指令发起符合要求的DELETE请求,替换原有a标签即可:

<form action="{{ route('users.destroy', $user->id) }}" method="POST">
    @csrf
    @method('DELETE')
    <button type="submit">Delete</button>
</form>

如果需要保留链接样式,可给submit按钮添加CSS样式伪装为普通链接。

2. 修正控制器删除逻辑

以下两种写法二选一即可:

QueryBuilder写法

public function destroy($id)
{
    $delete = DB::table('users')->where('id', $id)->delete();
    if ($delete) {
        echo 'success';
        // 实际项目建议跳转回列表页并携带闪存提示:return redirect()->route('users.index')->with('success', '删除成功');
    }
}

Eloquent模型写法(更推荐)

// 顶部引入User模型
use App\Models\User;

public function destroy($id)
{
    $delete = User::destroy($id);
    if ($delete) {
        echo 'success';
    }
}

内容的提问来源于stack exchange,提问作者Red Panda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:39:01