我有这个Laravel代码从数据库中检索数据:
$stats = DB::table('jobRequirements')
->join('jobs', 'jobRequirements.job', '=', 'jobs.id')
->join('types', 'jobRequirements.type', '=', 'types.id')
->join('users', 'jobs.user', '=', 'users.id')
->select(DB::raw('users.name as user, SUM(jobRequirements.number) as number, types.name as type'))
->where('jobRequirements.active', 1)
->groupBy('types.id')
->orderBy('users.name'asc')
->get();
return view('stats',compact('stats'));
然后我用Laravel刀片将它显示在表格中:
@foreach($stats as $s)
<tr>
<td>{{$s->user}}</td>
<td>{{$s->number}}</td>
<td>{{$s->type}}</td>
</tr>
@endforeach
我得到了这个:
table {
border-collapse: collapse;
}
table,
td {
border: 1px solid black;
}
td {
padding: 5px;
}
<table>
<tr>
<td>User1</td>
<td>3</td>
<td>Type2</td>
</tr>
<tr>
<td>User1</td>
<td>1</td>
<td>Type3</td>
</tr>
<tr>
<td>User2</td>
<td>2</td>
<td>Type1</td>
</tr>
<tr>
<td>User4</td>
<td>7</td>
<td>Type3</td>
</tr>
<tr>
<td>User4</td>
<td>2</td>
<td>Type6</td>
</tr>
</table>
但我需要这样:
table {
border-collapse: collapse;
}
table,
td {
border: 1px solid black;
}
td {
padding: 5px;
}
<table>
<tr>
<td>User name</td>
<td>Type1</td>
<td>Type2</td>
<td>Type3</td>
<td>Type6</td>
</tr>
<tr>
<td>User1</td>
<td>0</td>
<td>3</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>User2</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>User4</td>
<td>0</td>
<td>0</td>
<td>7</td>
<td>2</td>
</tr>
</table>
我怎样才能做到这一点?
我不需要完整的解决方案,一些示例或方向会很好。它也可以是普通的PHP。
答案 0 :(得分:1)
您有两种解决方案:
修复您的查询,以便您可以获得这样的内容(我假设您的类型已修复?!) SELECT用户名,type1数量,type2数量,type3数量,类型6数量
在控制器中返回视图(..)之前,以这种格式存储数据:
[username] = ['type1'=数字,'type2'=&gt;数字','type3'=&gt;数字','type7'=&gt;一个数字']
$data = array();
// foreach row
foreach ($stats as $key => $value) {
// if user doesn't exist in the array
if (!array_key_exists($value->user, $data)) {
// Add the user to the array
$data[$value->user] = array('type1' => 0, 'type2' => 0, 'type3' => 0, 'type6' => 0);
}
// Add the number of the type to the corresponded type
// Optional: You can do a check before adding if the type is already added
$data[$value->user][$value->type] = $value->number;
}
将$ data 传递到您的视图,并在您执行的视图中执行:
@foreach($stats as $key => $value)
<tr>
<td>{{$key}}</td>
<td>{{$value['type1']}}</td>
<td>{{$value['type2']}}</td>
<td>{{$value['type3']}}</td>
<td>{{$value['type7']}}</td>
</tr>
@endforeach
我希望我能帮到你一点。
答案 1 :(得分:0)
试试这个,
<table>
<tbody>
<tr>
<td><b>User</b></td>{{ $user }}
</tr>
<tr>
<td><b>Number</b></td>{{ $number }}
</tr>
<tr>
<td><b>Type</b></td>{{ $type }}
</tr>
</tbody>
要打印表格,
{{1}}