laravel - 在 laravel 的两个不同的 Select Tag 中显示嵌套 foreach 循环的数据
问题描述
我有两个模型(类别,品牌)与 laravel 中的一对多关系(hasMany)相关,例如category hasMany brands
。现在我想在一个选择标签中显示品牌数据,在另一个选择标签中显示类别模型数据。
- 这是我的控制器代码
$category=Category::with('brands')->get();
return view('product.add')->with('category',$category);
- 这是我的视图刀片。
<div class="form-group">
<select name="category_id" class="input">
<option value="">Select Main Category</option>
@foreach($category as $category)
<option value="{{$category->id}}">{{$category->name}}</option>
@endforeach
</select>
</div>
<div class="form-group">
<select name="brand_id" class="input">
@foreach($brands->brands as $brand)
<option value="{{$brand->id}}">{{$brand->name}}</option>
@endforeach
</select>
</div>
它不工作
解决方案
你可以做这样简单的事情:
<div class="form-group">
<select name="category_id" class="input">
<option value="">Select Main Category</option>
@foreach($category as $cat)
<option value="{{$cat>id}}">{{$cat->name}}</option>
@endforeach
</select>
</div>
<div class="form-group">
<select name="brand_id" class="input">
@foreach($category as $cat)
@foreach($cat->brands as $brand)
<option value="{{$brand->id}}" category="{{$cat->id}}">{{$brand->name}}</option>
@endforeach
@endforeach
</select>
</div>
并且您只需要使用 javascript(jquery) 显示所选选项的品牌
$('[name="category_id"]').on('change',function() {
if($(this).val() != '') {
$('[name="brand_id"] option').hide();
$('[name="brand_id"] option[category="'+$(this).val()+'"]').show();
} else {
$('[name="brand_id"] option').show();
}
});
推荐阅读
- python - 对话流 Webhook 不适用于 ngrok
- wpf - WPF 数据绑定将文本块文本链接到组合框选择
- scala - 如何从 spark-shell 的 S3 文件加载 RDD?
- python - Python 3.6 multiprocessing.Pool 间歇性无法在 KeyboardInturrupt 上退出
- php - 如何对相关表中的函数值求和?
- regex - 正则表达式选择两个没有分隔符的 url
- sql - SQL,选择只有特定值类型的行
- php - Braintree 使用 ajax 请求处理错误
- chart.js - chartjs如何将十进制更改为整数X轴
- spring - spring oauth2 资源服务器自定义逻辑来验证令牌并设置身份验证对象