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