试图找出如何显示具有此类数据的数据库的结果......
如果数据存储如下......
Style Color
如果我想显示这样的数据
颜色:红色,蓝色,黄色
颜色:红色,蓝色
颜色:黑色
我无法弄清楚如何同时分组以及显示组内的不同特征。我看到了如何显示每个不同的计数的示例,但没有显示如何显示分组记录的唯一特征值。
答案 0 :(得分:0)
你可以从模态中获取一个普通的集合,即。 Styles::all()
。然后使用集合上的groupBy
函数。
// Sample data as per database query
$data = collect([
['style' => 'classy hat', 'color' => 'red'],
['style' => 'classy hat', 'color' => 'orange'],
['style' => 'classy hat', 'color' => 'green'],
['style' => 'stylish hat', 'color' => 'blue'],
['style' => 'stylish hat', 'color' => 'orange'],
]);
$styles = $data->groupBy('style');
foreach ($styles as $style => $colors) {
echo "<h1>" . $style . "</h1>";
echo implode(', ', $colors->pluck('color')->toArray());
}
那会给你
优雅的帽子
红色,橙色,绿色
时髦的帽子
蓝色,橙色
或者,您可以构建所需的整个数组:
$styles = $data->groupBy('style')
->map(function ($styles) {
return $styles->pluck('color');
});
print_r($styles->toArray());
Array
(
[classy hat] => Array
(
[0] => red
[1] => orange
[2] => green
)
[stylish hat] => Array
(
[0] => blue
[1] => orange
)
更新以打印
foreach ($styles->toArray() as $style => $colors) {
echo "<h1>" . $style . "</h1>";
echo implode(', ', $colors) . "<br />";
}
刀片视图更新
@foreach ($styles->toArray() as $style => $colors)
<h1>{{ $style }}</h1>
@foreach ($colors as $color)
{{ $color }},
@endforeach
<!-- OR -->
{{ implode(', ', $colors) }}
@endforeach