2017-04-09 10 views
0

テンプレートでのピボットテーブルから書式設定データのPCI Express 3.0
を...Laravel:私はこのような製品の仕様を表示するテンプレートで

このforeach内で別のループを追加しようとしましたが、エラーが発生しました:

は現在、この出力:

Model 
Brand: Asus 
Interface 
Interface: PCI Express 3.0 
Chipset 
Chipset Manufacturer: AMD 
Chipset 
GPU: Radeon RX 470 
Chipset 
Core Clock: 1270 MHz in OC mode 
Memory 
Effective Memory Clock: 6600 MHz 
Memory 
Memory Size: 4GB 
Memory 
Memory Interface: 256-Bit 
Memory 
Memory Type: GDDR5 

私は$specification->name一度だけして、そのタイプの下のすべての属性と値を表示する必要があります。

これは、ピボットテーブルの構造である:

​​

私はこれをどのように実現するだろうか?テーブルの構造を変更する必要がありますか?

答えて

1

これを達成する最も良い方法は、いくつかのポストデータベース処理であると思います。

次のコードを使用してください。

// Create a new collection 
$specifications = new Collection; 

// Loop through specifications 
foreach($product->specifications as $specification) { 
    if (! $specifications->has($specification->name)) { 
     // This is the first specification of this name 
     $currentSpecs = new Collection; 
    } else { 
     // Other specifications have been entered 
     $currentSpecs = $specifications->get($specification->name); 
    } 

    // Now we add the current spec to the list and set it on the main collection 
    // Using the core name as the key 
    $currentSpecs->put($specification->pivot->attribute, $specification->pivot->value); 
    $specifications->put($specification->name, $currentSpecs); 
} 

テンプレートでは、次のことができます。

foreach($specifications as $name => $attributes) { 
    echo $name; 
    foreach($attributes as $attribute => $value) { 
     echo $attribute .': '. $value; 
    } 
} 

はもちろん、私はあなたのIDまたは実際のモデルのいずれかを必要としないと仮定してきたが、これは非常に簡単にそれで動作するように適合させることができます。 Collectionクラスにはeachメソッドを使用することもできます。

とにかく、これが役立つことを願っています。

関連する問題