猿问

laravel eloquent - 此集合实例上不存在属性

我的代码有问题。我在数据库中有两个表,

带有字段(id_am,名称)的“汽车制造商”和带有字段(id_cm,名称,id_am)的“汽车模型”,女巫通过 id_am 字段与表汽车制造商相关。一家汽车制造商可以拥有多种车型。在我的代码中看起来像这样:

汽车制造商


class Automakers extends Model

{

    protected $table = 'automakers';


    public $primaryKey = 'id_am';


    public function carModels(){

        return $this->hasMany('App\CarModels', 'id_am', 'id_am');

    }

车模


class CarModels extends Model

{

    protected $table = 'car_models';


    public $primaryKey = 'id_cm';


    public function carModels()

    {

        return $this->belongsTo('App\Automakers', 'id_am', 'id_am');

    }

}

现在,当我尝试查看汽车制造商名称时,出现错误


此集合实例上不存在属性 [名称]。


我的控制器代码


public function create($id)

    {

        $models = CarModels::find($id)->carModels->name;        


        return view('cars.models')->with('models', $models);

    }

我做错了什么吗?


炎炎设计
浏览 127回答 1
1回答

DIEA

您应该更改 CarModel 中的关系名称。public function autoMaker(){    return $this->belongsTo('App\Automakers', 'id_am');}在 Controller 中只需更改关系名称:public function create($id){    $models = CarModels::find($id)->autoMaker->name;            return view('cars.models')->with('models', $models);}注意:请遵循 Laravel 的命名约定来避免这种情况。您的模型名称应该是单数。
随时随地看视频慕课网APP
我要回答