【发布时间】:2015-02-07 05:56:17
【问题描述】:
我正在尝试为用户将在产品页面上选择的产品的各种属性创建一个下拉选择框,例如重量、风味或颜色。我的产品数据库目前如下:
products(id,productname,productprice)
productattributes(id,productid,attributename,value)
我正在使用 Laravel。到目前为止,在我的控制器中,我有:
public function show($id)
{
$product = DB::table('products')->where('slug', $id)->take(1)->get();
$prodid = DB::table('products')->where('slug', $id)->pluck('id');
$prodattr = DB::table('productattributes')->where('prodid', $prodid)->get();
return View::make('product/singleproduct', ['product' => $product, 'prodattr' => $prodattr]);
}
在我看来:
@foreach ($prodattr as $prodattribute)
{{ $attrname = $prodattribute->attributename }}
{{ $attrvalue = $prodattribute->value }}
@endforeach
这给了我输出:
Flavour Unflavoured
Flavour Strawberry
Weight 1kg
所以我有我需要的数据,但我的问题是如何将它放入每个属性的选择框中。我不会总是知道属性名称是什么(例如,可以添加颜色)或者会有多少,所以我不想硬编码'Flavour'等。我基本上想生成HTML这个:
<select name="flavour">
<option value="Unflavoured">Unflavoured</option>
<option value="Strawberry">Strawberry</option>
</select>
<br>
<select name="weight">
<option value="1kg">1kg</option>
</select>
有人有什么想法吗?我正在考虑循环中的循环,或者我的表格布局不太理想?我曾考虑在 foreach 循环中添加另一个查询,但这似乎适得其反,因为我认为我拥有所需的所有数据。我还想知道是否有可能以某种方式组合或合并数组?非常感谢任何帮助!
【问题讨论】:
标签: php html sql laravel database-design