Laravel报错BadMethodCallException 调用未定义方法App\Models\BatterFirst::index()
问题原因
你报错的核心原因是路由配置错误:
- 你在
routes/web.php中定义资源路由时,第二个参数错误传入了模型类BatterFirst::class,而资源路由的第二个参数需要绑定对应的控制器类,导致请求被路由到模型类中,模型自然不存在index()方法。
修复方案
1. 修正路由配置
将web.php中的资源路由代码修改为:
Route::resource('BatterFirst', BatterFirstController::class);
同时调整顶部的类引入,确保引入正确的控制器类:
use App\Http\Controllers\BatterFirstController; use Illuminate\Support\Facades\Route;
2. 修复控制器方法变量传递问题
你在show、edit方法中使用compact('BatterFirst')传递变量,但方法参数定义的变量是小写开头的$batterFirst,大小写不匹配会导致视图接收不到对应数据,修改为:
// show方法 return view('BatterFirst.show',compact('batterFirst')); // edit方法 return view('BatterFirst.edit',compact('batterFirst'));
3. 其他需要修正的细节
- 视图文件名拼写错误:你写的是
BatterFrist/index.php,正确拼写应为BatterFirst/index.blade.php(Laravel视图默认使用blade模板,后缀应为.blade.php) - 视图中调用了
$value->overs字段,但你的模型$fillable中没有定义overs字段,需要确认数据库是否存在该字段,若不存在需要补充字段或者删除该调用。
内容的提问来源于stack exchange,提问作者Abdullah Al Shahed
相关产品推荐
相关产品推荐

