laravel - 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) 获取产品
请告诉我出了什么问题以及如何解决?
解决方案
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);
推荐阅读
- python - 如何更改 TextBox 对象的标签位置?
- android - 如何防止Android中TextView中的图标换行
- webpack - Webpack 5 静态文件的不同哈希
- reactjs - 如何在react上动态创建表单并一键一键提交
- django - Django:将“DEFAULT_AUTO_FIELD”添加到settings.py后,“AttributeError:类型对象'AutoField'没有属性'rsplit'”
- c++ - 如何在 C++ 中用单词显示数字的数字?
- excel - Excel VBA 在其他人在其中时以只读方式打开中央日志(也在 Excel 中)
- python - AWS Lambda 函数将奇怪的输出写入 S3
- java - 启动 2.5。Spring yml 属性覆盖测试配置 Bean
- java - 如何使用android在数据库中登录用户信息