You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中按guru_category分组展示教师数据仅显示单个分类的问题求助

Laravel中按guru_category分组展示教师数据仅显示单个分类的问题求助

我正在开发一个按分类(guru_category)分组展示教师数据的功能,以下是我使用的代码:

控制器代码

public function showGuru(Request $request)
{
    $search = $request->input('search');
    $category = $request->input('category');

    $gurus = Guru::when($search, function ($query) use ($search) {
            return $query->where('nama_guru', 'like', '%' . $search . '%')
                         ->orWhere('guru_category', 'like', '%' . $search . '%')
                         ->orWhere('divisi_guru', 'like', '%' . $search . '%');
        })
        ->when($category, function ($query) use ($category) {
            return $query->where('guru_category', $category); // Filter berdasarkan kategori
        })
        ->get()
        ->groupBy('guru_category'); // Kelompokkan berdasarkan kategori

    return view('show.guru', compact('gurus', 'search', 'category'));
}

Blade模板代码

@foreach($gurus as $category => $categoryGurus) <!-- Iterasi setiap kategori -->
    <div class="flex flex-col mb-8">
        <!-- Tampilkan nama kategori -->
        <div>
            <h1 class="font-bold text-md mb-2 uppercase">{{ $category }}</h1> <!-- Nama kategori -->
        </div>

        <!-- Iterasi guru di dalam kategori -->
        <div class="grid grid-cols-2 md:grid-cols-5 mx-4 gap-2 space-y-4">
            @if($categoryGurus->isEmpty()) <!-- Jika tidak ada guru dalam kategori -->
                <p>No gurus available in this category.</p>
            @else
                @foreach($categoryGurus as $guru) <!-- Iterasi setiap guru dalam kategori -->
                    <div class="flex flex-col">
                        <!-- Gambar Guru -->
                        <img class="mb-2 rounded-lg" src="{{ asset('storage/' . $guru->foto_guru) }}" alt="{{ $guru->nama_guru }}">
                        
                        <!-- Detail Guru -->
                        <div class="text-container">
                            <h1 class="font-bold text-sm capitalize leading-4 tracking-tighter">{{ $guru->nama_guru }}</h1>
                            <p class="text-xs leading-3 opacity-50">{{ $guru->divisi_guru }}</p>
                        </div>
                    </div>
                @endforeach
            @endif
        </div>
    </div>
@endforeach

我原本期望所有分类(guru_category)都能展示出来,并且每个分类下对应分组的教师数据也能正常显示。

但实际情况是:页面上只显示了一个分类,尽管我在控制器里用dd($gurus)输出时能看到多个分类及其对应的数据。以下是dd($gurus)的输出结果:

Illuminate\Database\Eloquent\Collection {
    "Kepala Sekolah" => Collection [
        0 => Guru { nama_guru: "mary jane", guru_category: "Kepala Sekolah" },
    ],
    "Matematika" => Collection [
        0 => Guru { nama_guru: "John Doe", guru_category: "Matematika" },
    ],
    ...
}

为什么视图里只显示了一个分类?是我遍历分组数据的方式不对,还是逻辑上有什么问题?希望能得到大家的帮助!

备注:内容来源于stack exchange,提问作者Moses Farrel Risgian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 10:23:06