Laravel Eloquent 关系返回试图获取非对象的属性'office_name'
Posted
技术标签:
【中文标题】Laravel Eloquent 关系返回试图获取非对象的属性\'office_name\'【英文标题】:Laravel Eloquent relationship return Trying to get property 'office_name' of non-objectLaravel Eloquent 关系返回试图获取非对象的属性'office_name' 【发布时间】:2021-06-30 01:15:06 【问题描述】:这是我的雄辩关系-
public function owner()
return $this->hasOne(Owner::class, 'owner', 'owner_name');
当我访问完整对象时-
$dealer->owner
我得到了对象
"id": 11087,
"office_name": "BHILWARA DTO ( RJ-6 )",
"registration_number": "RJ06VS2840",
"chasis_number": "MBLHAR076J4K00280",
"owner": "GANESH LAL",
"father_name": "KASTUR KUMAWAT",
"address": "THALARAIPUR",
"vehicle_class": "M-Cycle\/Scooter",
"insurance_type": "COMPREHENSIVE",
"insurance_company_name": "TATA AIG GENERAL INSURANCE CO. LTD.",
"insurance_from": "2018-11-08",
"insurance_up_to": "2019-11-07",
"policy_number": "0189518728",
"created_at": null,
"updated_at": null
但是当我尝试从对象访问单个属性时 -
$dealer->owner->office_name
我收到错误
试图获取非对象的属性“office_name”
【问题讨论】:
我最好的猜测是$dealer
在 foreach 中,其中一个没有所有者
那我该怎么办?
可能有经销商在数据库中缺少所有者。
【参考方案1】:
当您尝试从没有 foreach
循环的模型数组对象中获取 office_name 时,您将得到以下内容。
试试这个
@foreach($dealer->owner as $de)
$de->office_name
@endforeach
【讨论】:
hasOne 关系返回模型而不是集合【参考方案2】:根据 laravel 文档,这里是 hasOne 关系的语法,
return $this->hasOne(Phone::class, 'foreign_key', 'local_key');
所以在你的情况下,
return $this->hasOne(Owner::class, 'owner', 'owner_name');
第三个参数是所有者相关表中的本地键列。但是在你给定的对象中没有像 owner_name 这样的东西,所以关系应该是这样的:
return $this->hasOne(Owner::class, 'owner', 'owner');
【讨论】:
以上是关于Laravel Eloquent 关系返回试图获取非对象的属性'office_name'的主要内容,如果未能解决你的问题,请参考以下文章
laravel 返回与 eloquent 和 laravel 的关系
laravel:关系方法必须返回 Illuminate\Database\Eloquent\Relations\Relation 类型的对象
试图在 laravel eloquent 中获取非对象错误的属性“名称”
无法在 Controller Laravel belongsToMany 关系中获取正确的数据 - Laravel / Eloquent [关闭]