laravel无法访问关系属性

时间:2019-10-11 12:19:31

标签: laravel laravel-5 eloquent laravel-5.8

我的模型产品如下:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    //

    public function Category(){
        return $this->belongsTo('App\Category');
    }
    public function size_unit(){
        return $this->belongsTo('App\size_unit', 'size_unit');
    }
}

size_units表具有两列:id,unit 产品表的size_unit列是外键,引用了size_units表上的ID

当我尝试使用以下方法访问产品的单位列时:

{{ $product->size_unit->unit }}

我收到以下错误:

  

“试图获取非对象的属性'unit'”

但是当我使用时:

{{ dd($product->size_unit() }}

我可以看到关联->属性下的单位,所以我尝试使用:

$product->size_unit()->unit

我收到以下错误:

  

“未定义的属性:Illuminate \ Database \ Eloquent \ Relations \ BelongsTo :: $ unit”

我正在使用with('size_unit)

请告诉我哪里出了问题以及如何解决?

1 个答案:

答案 0 :(得分:0)

size_unit类重命名为SizeUnit,您的关系应如下所示。

public function category(){
    return $this->belongsTo('App\Category');
}

public function sizeUnit(){
    return $this->belongsTo('App\SizeUnit', 'size_unit');
}

您应该像这样访问sizeUnit属性:

dd($product->sizeUnit);

Follow Laravel naming conventions

相关问题