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

Laravel8调用VehicleModel未定义方法getVehicleModelsByMake报错如何解决

问题解决方案

报错根本原因

你在App\Models\VehicleModel模型中定义的查询方法名为getModelsByMake,但控制器中调用的方法名为getVehicleModelsByMake,二者名称不匹配,因此Laravel无法找到对应方法,抛出BadMethodCallException异常。

修复方法

两种方案二选一即可,核心是保证模型方法名和控制器调用的名称统一:

  • 方案1:修改控制器调用的方法名,和模型定义保持一致
    找到控制器getVehicleModelsByMake方法中的调用行,修改为:
$vehiclemodels =  $this->myvehiclemodel->getModelsByMake($id);
  • 方案2:修改模型的方法名,和控制器调用保持一致
    将VehicleModel模型中的方法名改为getVehicleModelsByMake:
public function getVehicleModelsByMake($id) {
    $vehiclemodels = DB::table('vehicle_models')->where('make_id',$id)->get();
    return $vehiclemodels;
}

可选优化建议

你已经在模型中定义了关联关系,无需手动用DB门面查询,用Eloquent关联写法代码更符合Laravel规范:

  1. 先在VehicleMake模型中定义一对多关联:
public function vehicleModels()
{
    return $this->hasMany(VehicleModel::class, 'make_id');
}
  1. 控制器中直接通过关联查询即可,无需自定义查询方法:
$vehiclemodels = VehicleMake::findOrFail($id)->vehicleModels;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:51:01