首页 > 解决方案 > 防止 foreach 循环重复 -laravel

问题描述

我通过代码从我们的数据库中获取服务

'services' =>  Service::with('seller.user', 'seller.level', 'subcategory')
            ->whereHas('seller', function ($query) {
                return   $query->where('status', 'active');
            })
            ->Where('tags', 'like', '%' . $this->tag . '%')
            ->withAvg('review', 'rating')
            ->withCount('review')
            ->paginate(20)

如何忽略循环中的重复子类别

 @foreach ($services as $service)
        $$service->subcategory->name
        @endforeach

我得到很多重复的子类别

我需要子类别的详细信息而不仅仅是名称

关系

class Service extends Model
{
    public function subcategory()
    {
        return $this->belongsTo(Subcategory::class);
    }
}

class Subcategory extends Model
{
    public function service()
    {
        return $this->hasMany(Service::class);
    }
}

餐桌服务

Schema::create('services', function (Blueprint $table) {
        $table->id();
        $table->foreignId('seller_id')->constrained()->onDelete('cascade')->onUpdate('cascade');
        $table->foreignId('subcategory_id')->constrained()->onDelete('cascade')->onUpdate('cascade');
        $table->string('title')->nullable();
        $table->string('slug')->nullable();
        $table->float('price')->nullable();
        $table->json('tags')->nullable();
    }

表子类别

  Schema::create('subcategories', function (Blueprint $table) {
        $table->id();
        $table->foreignId('category_id')->constrained()->onDelete('cascade')->onUpdate('cascade');
        $table->string('name');
    }

标签: phplaravelfor-loop

解决方案


您可以尝试以下方法:

@php
$subcategories = array();
foreach ($services as $key => $service) {
    array_push($subcategories, $service->subcategory->name);
}
$subcategories = array_unique($subcategories);
@endphp
@foreach ($subcategories as $key => $subcategory)
    {{ $subcategory }}
@endforeach

推荐阅读