Laravel资源控制器Edit方法无法获取数据问题求助
问题原因及解决办法
核心问题是路由模型绑定的变量名不匹配:
- 路由列表显示edit路由的参数为
{rejected} - 控制器edit方法的参数为
Reject $reject
Laravel的路由模型绑定依赖参数名称与控制器变量名一致来匹配对应模型实例,两者名称不匹配时,框架无法正确查询对应ID的数据,只会生成一个空的Reject实例。
解决方法(二选一即可)
方法一:修改控制器方法的参数名
将控制器参数名改为和路由参数一致的$rejected:
public function edit(Reject $rejected) { dd($rejected); return view('dashboard.reject.edit',[ 'tittle' => 'Reject Stock', 'reject' => $rejected ]); }
方法二:在路由定义中指定模型绑定映射
如果不想修改控制器参数名,可以在资源路由里显式指定参数与模型变量的对应关系:
Route::resource('/dashboard/rejected', RejectController::class)->parameters([ 'rejected' => 'reject' ]);
配置后,路由参数{rejected}会对应到控制器的$reject变量,框架就能正确注入对应ID的模型数据。
额外检查点
若上述方法无效,可进一步确认:
- Reject模型的主键是否为
id,若自定义主键需在模型中添加protected $primaryKey = '你的主键字段名' - 数据库中存在对应ID的Reject记录
内容的提问来源于stack exchange,提问作者eka dita
相关产品推荐
相关产品推荐

