首页 > 解决方案 > 使用 eloquent 关系显示“结果”而不是“id”时出现错误,以防该字段是可选的,并留空 - Laravel

问题描述

我正在使用 eloquent 关系来显示sub_category_name来自另一个表而不是 sub_category_id。当我只输入category_id并留下sub_category_id空白即 null 时,我无法显示它的名称,sub_category_id因为它是未定义的,它会抛出错误Trying to get property 'sub_category_name' of non-object。如何避免此错误并将值显示为空白而不是找到sub_category_name.

这是定义关系的模型的代码,以及它检索当前的源代码sub_category_namesub_category_id并显示名称而不是 id。

模型

class MenuItem extends Model
{
    use HasFactory;

    protected $table = "menu_items";
    protected $fillable = ['category_id','sub_category_id', 'item_name', 'item_description'];

    public function SubCategories() {
        return $this->belongsTo(SubCategory::class, 'sub_category_id');
    }
}

活线组件

<tbody>
    @foreach($menuitemlist as $key=>$menuitem)
    <tr style="background-color: {{ $key % 2 == 0 ? '#fdfdfd': '#f5f5f5' }};">
        <td class="px-4 py-2">{{ $menuitemlist->firstitem() + $key }}</td>
        <td class="px-4 py-2">{{ $menuitem->category_id }}</td>

        <!---Here Is The Code Due To Which It's Throwing An Error When `sub_category_id` Is Null--->
        <td class="px-4 py-2">{{ $menuitem->subcategories->sub_category_name }}</td>
        <td class="px-4 py-2">{{ $menuitem->item_name }}</td>
        <td class="px-4 py-2">{{ $menuitem->item_description }}</td>
        <td class="px-4 py-2">
            <button wire:click="edit({{ $menuitem->id }})" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-1 px-4 rounded">
                Edit
            </button>
            <button wire:click="delete({{ $menuitem->id }})" class="bg-red-500 hover:bg-red-700 text-white font-bold py-1 px-4 rounded">
                Delete
            </button>
        </td>
    </tr>
    @endforeach
</tbody>

标签: phplaravellaravel-8laravel-livewire

解决方案


推荐阅读