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

Laravel报错Route [companies.show]未定义:数据更新成功但路由跳转失败

解决Route [companies.show] not defined的问题

你已经搞定了数据更新,却在路由跳转这里卡壳了?别着急,咱们一步步排查解决:

1. 先确认路由是否正确定义

首先去你的routes/web.php(如果是API路由就看routes/api.php)里,检查有没有定义companies.show这个命名路由。推荐用资源路由自动生成RESTful路由,或者手动明确命名:

// 推荐:资源路由,自动生成包括show在内的所有标准路由
Route::resource('companies', CompaniesController::class);

// 或者手动定义show路由
Route::get('/companies/{company}', [CompaniesController::class, 'show'])->name('companies.show');

注意路由名称的拼写必须完全是companies.show,复数、大小写都不能错。

2. 修正redirect()->route()的写法

你代码里的redirect()->route('compan...明显没写完,正确写法要传完整的路由名称,还要带上路由需要的参数(companies.show需要接收一个company参数):

if($companyUpdate){
    // 因为用了隐式模型绑定,直接传$company实例就行
    return redirect()->route('companies.show', $company);
    // 也可以手动传id:return redirect()->route('companies.show', ['company' => $company->id]);
}

3. 清除路由缓存(如果是生产环境)

如果是在生产环境,或者之前执行过路由缓存命令,新添加的路由可能不会生效,执行下面的命令清除缓存:

php artisan route:clear

之后可以用php artisan route:list命令查看所有已定义的路由,搜索companies.show确认它存在。

4. 额外小优化:简化你的update代码

你已经用了隐式路由模型绑定,完全不用再写Company::where('id', $company->id),直接更新模型就行:

public function update(Request $request, Company $company){
    $company->update([
        'name' => $request->input('name'),
        'description' => $request->input('description')
    ]);
    
    return redirect()->route('companies.show', $company);
}

这样代码更简洁,也减少了出错的可能~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:04:05