Laravel检查是否存在相关记录

Laravel Check if any related records exist

我有一个模特 Category 和一个模特 Subcategory。这些是相关的。

现在我想检查一个视图是否有子类别。如果是,运行这个代码,如果不是运行这个代码。

我想到了类似的东西

 @forelse($categories as $category)
                            @if($category->subcategory)
                                <li class="sub-category">
                                    <a href="#"><img src="{{ asset('img/icon/'.$category->icon) }}" alt="{{ $category->name }}">{{ $category->name }}</a>
                                    <ul class="sub-menu clearfix">
                                        @foreach(isset($category->subcategory)) as $subcategory)
                                            <li class="sub-sec col-md-6">
                                                <ul>
                                                    <li><a href="#" class="title">{{ $subcategory->name }}</a></li>
                                                    <!--//
                                                    <li><a href="#"><i class="fa fa-angle-double-right"></i> Single Item 1</a></li>
                                                    <li><a href="#"><i class="fa fa-angle-double-right"></i> Single Item 2</a></li>
                                                    <li><a href="#"><i class="fa fa-angle-double-right"></i> Single Item 3</a></li>
                                                    <li><a href="#"><i class="fa fa-angle-double-right"></i> Single Item 4</a></li>
                                                    -->
                                                </ul>
                                            </li>
                                        @endforeach
                                    </ul>
                                </li>
                            @else
                                <li><a href="#"><img src="{{ asset('img/icon/'.$category->icon) }}" alt="{{ $category->name }}">{{ $category->name }}</a></li>
                            @endif

                        @empty

                        @endforelse

但是使用isset()好像是错误的

有一种简单的方法可以做到这一点。直接用子类目数来判断。

示例:

if ($category->subcategory()->count() > 0)

也许你还应该更改一些变量、方法和关系的名称。它使阅读更容易。例如,您可以将子类别关系重命名为子类别,因为它将不止一个。

您的代码将类似于:

@forelse ($categories as $category)

    <li>

        <a href="...">{{ $category->name }}</a>

        @if ($category->subcategory()->count() > 0) // Check if more than one subcategory

            @foreach($category->subcategories as $subcategory) // Change $category->subcategory to $category->subcategories

                ...

            @endforeach

        @endif

    </li>

@empty

    No categories

@endforelse

希望这对您有所帮助:)