Laravel 5.8下拉筛选器失效求助:仅调用数据库第一行数据
解决下拉框仅显示数据库第一行数据的问题
嘿,我来帮你搞定这个下拉框只加载第一条数据的问题!咱们一步步排查:
1. 先确认控制器传递的$data是否包含所有数据
这是最常见的原因——如果你的控制器里用了first()而不是get()/all(),那$data就只会是单条记录,循环自然只跑一次。
比如检查控制器代码:
// ❌ 错误写法:只获取第一条数据 $data = Category::first(); // ✅ 正确写法:获取所有数据 $data = Category::all(); // 或者 $data = Category::get();
如果需要对Umur字段去重(避免下拉框出现重复选项),可以加上distinct():
$data = Category::distinct('Umur')->get();
2. 修正Blade循环的语法错误
你的代码里@foreach($data as $category){多了个多余的大括号{,Blade的循环语法不需要这个符号,这会导致循环逻辑异常,可能只渲染了第一个选项。
修正后的Blade代码:
<div class="col-md-2"> <div class="text-justify"> <select class="itemName form-control form-filter" style="width:90px;" name="itemName" id="itemName"> @foreach($data as $category) <option value="{{ $category->Umur }}">{{ $category->Umur }}</option> @endforeach </select> </div> </div>
3. 验证数据库中的数据
最后检查下数据库里的Umur字段是不是有多条不同的值,如果所有记录的Umur都一样,浏览器会自动合并重复的下拉选项,看起来就像只显示了一条。这种情况就用上面提到的distinct()来处理。
你可以先在模板里临时加一行{{ dd($data) }},看看$data到底有多少条数据,这样能快速定位问题~
内容的提问来源于stack exchange,提问作者Cc See
相关产品推荐
相关产品推荐

