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

Laravel自定义destroy控制器删除记录ID滞后一位故障排查

异常原因分析

核心问题出在你初始控制器的查询逻辑调用错误:

  • Car::find($id)方法本身就会根据传入的主键ID直接返回匹配的单个Car模型实例,匹配不到时返回null,调用该方法后你已经拿到了对应ID的Car对象。
  • 你在find($id)之后链式调用了->first(),这是错误的根源:Eloquent模型实例调用不存在的方法时会触发魔术方法__call(),自动新建一个不带任何查询条件的Car模型查询构造器,再执行first()获取数据表的第一条记录。
    你遇到的删除ID比传入小1的情况,是因为你的数据表默认查询排序规则为ID倒序,无任何条件的first()返回的记录刚好是比你传入测试ID小1的条目,最终导致错误删除。
正确写法说明

两种可行的写法:

  1. 仅用find()获取对应模型,去掉多余的first():
public function destroy($id)
{
    $car = Car::find($id);
    $car->delete();
    return redirect('/cars');
}
  1. 你已经验证可用的路由模型绑定写法,Laravel会自动根据路由参数匹配对应ID的模型实例,无需手动查询,更简洁安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:54:04