【问题标题】:laravel can not access to relation attributeslaravel 无法访问关系属性
【发布时间】:2020-02-08 23:23:57
【问题描述】:

我的产品型号如下:

<?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 }}

我收到以下错误:

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

但是当我使用时:

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

可以看到relation->属性下的单元,所以尝试使用:

$product->size_unit()->unit

我收到以下错误:

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

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

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

【问题讨论】:

  • 您可以尝试使用驼峰式命名,例如sizeUnitSizeUnit 用于课程,并确保您的外键正确。

标签: laravel laravel-5 eloquent laravel-5.8


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 2017-02-17
    • 1970-01-01
    • 2023-03-17
    • 2015-11-22
    • 2021-05-09
    • 2021-11-19
    相关资源
    最近更新 更多