Php 基于项将表LAVEL行转换为列
嗨,请帮我拿一张这样的桌子:Php 基于项将表LAVEL行转换为列,php,sql,laravel,eloquent,pivot,Php,Sql,Laravel,Eloquent,Pivot,嗨,请帮我拿一张这样的桌子: po date bmi_code qty 6800083953 2020-08-12 TA23D7GANV6 2198.27 6800083953 2020-08-12 TA40Y3LANC2 394.98 6800083953 2020-08-13 TA23D7GANV6 650.74 6800083953 2020-08-13 TA40Y3LANC2 626.52 6800083952 2020-08-14
po date bmi_code qty
6800083953 2020-08-12 TA23D7GANV6 2198.27
6800083953 2020-08-12 TA40Y3LANC2 394.98
6800083953 2020-08-13 TA23D7GANV6 650.74
6800083953 2020-08-13 TA40Y3LANC2 626.52
6800083952 2020-08-14 TA23D7GANV6 424.944
6800083953 2020-08-14 TA40Y3LANC2 626.52
我想要这样的数据,
怎么说,
bmi_code 2020-08-12 2020-08-13 2020-08-14
TA23D7GANV6 2198.27 650.74 424.944
TA40Y3LANC2 394.98 626.52 626.52
这是我的密码
$itemlist= ProductionOutput::select('bmi_code',function($query){
$query->DB::raw('SUM(qty) as qty')->groupBy('date');
})->groupBy('bmi_code')->get();
要首先执行数据透视转换,您需要查询按
bmi\u code
和date
分组的记录
$productionResults = ProductionOutput::select('bmi_code','date',DB::raw('SUM(qty) as qty'))
->groupBy(['bmi_code','date'])
->get();
$productionResults
将包含以下数据
[
['bmi_code' => 'TA23D7GANV6', 'date' => '2020-08-12', 'qty'=> 2198.27],
['bmi_code' => 'TA23D7GANV6', 'date' => '2020-08-13', 'qty'=> 650.74],
['bmi_code' => 'TA23D7GANV6', 'date' => '2020-08-14', 'qty'=> 424.944],
['bmi_code' => 'TA40Y3LANC2', 'date' => '2020-08-12', 'qty'=> 394.98],
['bmi_code' => 'TA40Y3LANC2', 'date' => '2020-08-13', 'qty'=> 626.52],
['bmi_code' => 'TA40Y3LANC2', 'date' => '2020-08-14', 'qty'=> 626.52],
]
在这里,我们将为每个不同的bmi\u代码
值添加数组,这些值将包含bmi\u代码
键和每个bmi\u代码
的日期键
[bmi_code_value] => [[bmi_code => bmi_code_value, date1 => qty1, date2 => qty2, date3 => qty3,//....]]
我们还将收集标题(不同日期)
现在,我们将遍历数据以显示最终结果集
echo join($headers, ' ');
echo '<br>';
foreach($pivotData as $data){
foreach($headers as $header){
echo $data[$header]. ' ';
}
echo '<br>';
}
你好,谢谢你的工作,但如何如果我只想没有价值header@FahrulRizal如果您不需要
$headers
只需跳过echo-join($headers')代码>此部分,但要显示最终集合中的值,仍然需要$headers
数组
echo join($headers, ' ');
echo '<br>';
foreach($pivotData as $data){
foreach($headers as $header){
echo $data[$header]. ' ';
}
echo '<br>';
}
BMI 2020-08-12 2020-08-13 2020-08-14
TA23D7GANV6 2198.27 650.74 424.944
TA40Y3LANC2 394.98 626.52 626.52