Laravel中如何用数据库数组值填充HTML下拉选择框?
解决方法
第一步:修正控制器代码
你当前用get()返回的是包含单个模型的集合,改用first()可以直接获取到id=12的单个Product实例,更便于后续处理:
public function index(){ $product = Product::where('id', 12)->first(); return view('product_details', compact('product')); }
第二步:在视图中生成下拉选择框
根据你的colours列存储格式,分两种情况处理:
情况1:已在模型中配置自动转换数组
如果你的Product模型已经通过$casts将colours列自动转为数组(推荐做法):
在Product模型文件中添加:
protected $casts = [ 'colours' => 'array', ];
此时视图可直接循环数组生成选项:
<select name="colour"> @if($product && $product->colours) @foreach($product->colours as $colour) <option value="{{ $colour }}">{{ $colour }}</option> @endforeach @endif </select>
情况2:colours列存储为JSON字符串
如果未配置模型转换,需要先在视图中将JSON字符串解码为数组:
<select name="colour"> @if($product && $product->colours) @php $colours = json_decode($product->colours, true); @endphp @foreach($colours as $colour) <option value="{{ $colour }}">{{ $colour }}</option> @endforeach @endif </select>
内容的提问来源于stack exchange,提问作者Chizo
相关产品推荐
相关产品推荐

