试图在 laravel eloquent 中获取非对象错误的属性“名称”

Posted

技术标签:

【中文标题】试图在 laravel eloquent 中获取非对象错误的属性“名称”【英文标题】:Trying to get property 'name' of non-object error in laravel eloquent 【发布时间】:2021-07-18 13:39:36 【问题描述】:

category模型中自行加入Eloquent

public function parent()

   return $this->belongsTo(Category::class, 'parent_id');
 

在刀片文件中:

@foreach($categories as $category)
    <tr>
        <td> $category->parent </td> // error in this line
    </tr>
@endforeach

当我这样做时,它显示:


    "id": 1,
    "name": "mobile",
    "description": null,
    "image": null,
    "parent_id": 0,
    "created_at": null,
    "updated_at": null

当我将&lt;td&gt; $category-&gt;parent &lt;/td&gt; 更改为&lt;td&gt; $category-&gt;parent-&gt;name &lt;/td&gt; 时,它显示如下错误:

试图获取非对象的属性“名称”(查看:C:\Users\HP\Desktop\laravel-project\laravel_ecommerce\resources\views\admin\pages\category\index.blade.php

如何访问$category-&gt;parent-&gt;name

【问题讨论】:

【参考方案1】:

如果父母没有孩子,那么你会得到这个错误。如果父对象为空,下面的示例将抛出 No Child 作为输出:

 $category->parent->name ??  'No Child' 

【讨论】:

【参考方案2】:

其实你得到这个是因为 hasMany 这样的关系关系。

$category->parent?$category->parent->name:"Some other message"

【讨论】:

以上是关于试图在 laravel eloquent 中获取非对象错误的属性“名称”的主要内容,如果未能解决你的问题,请参考以下文章

试图获取非对象的属性 [laravel 5.2]

Laravel 5.6 试图获取非对象的属性

试图获得非对象 Laravel 的属性“浴室”

Laravel 5 Eloquent:如何获取正在执行的原始 sql? (带有绑定数据)

Laravel Eloquent 在结果中附加一个非关系数据

试图在 laravel 5.5 中获取非对象的属性