首页 > 解决方案 > laravel 无法访问关系属性

问题描述

我的模型产品如下:

<?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 product 表有 size_unit 列,它是引用 size_units 表上 id 的外键

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

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

我收到以下错误:

“试图获取非对象的属性‘单位’”

但是当我使用时:

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

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

$product->size_unit()->unit

我收到以下错误:

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

我正在使用 with('size_unit) 获取产品

请告诉我出了什么问题以及如何解决?

标签: laravellaravel-5eloquentlaravel-5.8

解决方案


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);

遵循 Laravel 命名约定


推荐阅读