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

使用InertiaJS & Laravel删除数据库记录时遇错误,寻求帮助

Laravel 结合 InertiaJS 删除数据库记录报错

问题场景

点击删除按钮后出现404错误,无法正常删除数据库中的子记录。

相关代码

前端组件代码

链接按钮:

<Link class="trash" @click="submit(result.ChildID)">
    Move to Trash
</Link>

说明:ChildID为数据库中子记录的ID。

点击触发的方法:

methods: {
    submit: function (ChildID) {
        alert(ChildID)
        if (confirm("Are you sure you want to delete this child?")) {
            this.$inertia.delete('destroy/ChildID');
        }
    },
},

Laravel路由代码

Route::delete('destroy/{childID}',[childrenController::class,'destroy']);

Laravel控制器代码

public function destroy(children $childID){
     
    $childID->delete();
    return redirect()->route('View_Child_Profile');
}

问题原因及解决方案

1. 前端请求URL硬编码(核心问题)

当前代码中this.$inertia.delete('destroy/ChildID');里的ChildID是字符串字面量,不是动态传入的变量,导致请求的URL是/destroy/ChildID而非/destroy/实际ID值,触发404错误。

修正方法:使用动态拼接URL,比如ES6模板字符串:

this.$inertia.delete(`destroy/${ChildID}`);

或者用字符串拼接:

this.$inertia.delete('destroy/' + ChildID);

2. 路由模型绑定检查

Laravel路由模型绑定要求路由参数名与控制器参数名一致,同时模型类需正确引入:

  • 确保控制器顶部已引入对应的模型类,比如use App\Models\Child;(通常模型类为单数首字母大写,而非复数children)
  • 控制器方法参数修正为与模型匹配的命名,比如:
public function destroy(Child $childID){
    $childID->delete();
    return redirect()->route('View_Child_Profile');
}

3. 路由访问路径确认

确保请求的URL前缀正确,比如如果路由是定义在web.php中且没有前缀,那么请求的URL应为/destroy/ID,如果有路由组前缀(如/admin),则需要在前端请求时加上对应前缀。

内容的提问来源于stack exchange,提问作者Muhammad Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:20:47