2017-09-12 18 views
1

1つの製品には複数の属性があり、各組み合わせは個々の製品を表します。 woocommerce(WordPress)のバリエーションを持つ可変商品を追加するとき。Laravel 5.4の属性名に基づいてドロップダウンをグループ化する方法は?

今、商品属性が配列になっていて混乱しています。複数のカテゴリに基づいて複数のドロップダウンを作成するにはどうすればよいですか。インデックス0として

array:3 [▼ 
    0 => array:3 [▼ 
    "id" => 13 
    "name" => "size" 
    "value" => "small" 
    ] 
    1 => array:3 [▼ 
    "id" => 14 
    "name" => "size" 
    "value" => "large" 
    ] 
    2 => array:3 [▼ 
    "id" => 19 
    "name" => "color" 
    "value" => "white" 
    ] 
] 

、1は同じ名前「サイズ」の異なる値を有しているので、これは、1つのドロップダウンに表示される必要があり、他方がダウン別の降下に表示されるべきです。

私のロジックが間違っていることを知っています。あなたは私を助けてくれますか?

<select class="form-control" id="attribute" name="attribute[]" style="width:70%;"> 
@foreach($attributes as $attribute) 
<option value="">Select {{ $attribute->name }}</option> 
<option value="{{ $attribute->id }}">{{ $attribute->value }}</option> 
@endforeach 
</select> 

おかげで、

+0

私は名前でグループ分けしたいと言っていますか? –

+0

はいあなたはそれが –

+0

と言うことができますあなたの属性テーブルにタイプを追加する必要があります。したがって、各タイプのドロップダウンを設定することができます。 (サイズ/色/ ..)タイプは、別のテーブルにすることもできます。タイプを追加したい場合は – Christophvh

答えて

4

あなたはそのように彼らのタイプによってグループに属性をcollectionを使用し、それらをループできます

@foreach(collect($attributes)->groupBy('type') as $options) 

    <label>{{ $options->first()->name }}</label> 

    <select class="form-control"> 
     @foreach($options as $option) 
      <option value="{{ $option->id }}">{{ $option->value }}</option> 
     @endforeach 
    </select> 
@endforeach 

あなたはソートする必要があります。選択肢の属性はnameです。

希望すると便利です。

+0

私はそれが ' - > groupBy( '​​type')'の代わりに ' - > groupBy( '​​name')'だと思っていますが、これは最も簡単な解決策のようです。 – SimonDepelchin

+0

ありがとう、あなたは私の一日を救った。 –

関連する問題