首页 > 解决方案 > Blade中非对象的Laravel数据库集合属性

问题描述

我在 Blade 组件中循环遍历 Laravel 集合时遇到问题。我得到的错误如下。

试图获取非对象的属性“名称”。

首先,我查询数据库以获取包含其子项的类别列表。

ContentCategory::with('children')
    ->whereNull('parent_id')
    ->orderby('name')
    ->get();

我有一个显示 Select2 下拉列表的 Laravel Blade 组件。

<x-select2 name="user_categories" :list="$user_categories">
    <x-slot name="label">
        @cruds(user.fields.user_categories.text)
    </x-slot>
    <x-slot name="helper">
        @cruds(user.fields.user_categories.helper)
    </x-slot>
    <x-slot name="select_all">
        @globals(select_all)
    </x-slot>
    <x-slot name="deselect_all">
        @globals(deselect_all)
    </x-slot>
</x-select2>

当我遍历集合并尝试访问集合的属性时,我得到一个未定义的属性。

@foreach($list as $parent)
    <option value="{{ $parent->id }}" >{{ $parent->name }}</option>
    @if (isset($parent->children) && $p->children->count())
        @foreach($parent->children as $children_id => $children_title)
            <option value="{{ $children_id }}" {{ $isSelected($children_id) ? 
                'selected="selected"' : '' }}>{{ $children_title }}</option>
        @endforeach
    @endif
@endforeach

下图是数据的集合

错误如下。

ErrorException 试图获取非对象的属性“id”(查看:/var/www/html/trybz/resources/views/components/select2.blade.php)

发生错误的地方

标签: phplaraveljquery-select2laravel-collection

解决方案


推荐阅读