Php SQL Laravel GroupBy并显示所有记录
我的数据库表具有以下结构: 职员身份证 列id 资料 我试图找到一种方法,以便查看给定员工id的所有列id和数据字段 例如,可能有6条记录的staff_id为2,33条记录的staff_id为1 现在我需要得到这个,这样我就有了一个数组,我可以循环通过它来提供我所有的数据 因此,在PHP中,类似于:Php SQL Laravel GroupBy并显示所有记录,php,mysql,sql,laravel,Php,Mysql,Sql,Laravel,我的数据库表具有以下结构: 职员身份证 列id 资料 我试图找到一种方法,以便查看给定员工id的所有列id和数据字段 例如,可能有6条记录的staff_id为2,33条记录的staff_id为1 现在我需要得到这个,这样我就有了一个数组,我可以循环通过它来提供我所有的数据 因此,在PHP中,类似于: foreach($staffs as $staff) { foreach($staff->datas as $data) { echo $data->column
foreach($staffs as $staff) {
foreach($staff->datas as $data) {
echo $data->column_id . " - " . $data->data . "<br />";
}
echo "<hr />";
}
foreach($staff作为$staff){
foreach($staff->data as$data){
echo$data->column_id.“-”$data->data.“
”;
}
回声“
”;
}
我看过GroupBy,但分组时似乎只返回一个结果
我使用的是Laravel。员工模型
public function datas(){
return $this->hasMany(DataTable::class,'staff_id');
}
现在您可以使用:
$staffs=Staff::with('datas')->get(); // get data with relltionships
foreach($staffs as $staff) {
foreach($staff->datas as $data) {
echo $data->column_id . " - " . $data->data . "<br />";
}
echo "<hr />";
}
$Staff=Staff::with('datas')->get();//使用relltionships获取数据
foreach($staff作为$staff){
foreach($staff->data as$data){
echo$data->column_id.“-”$data->data.“
”;
}
回声“
”;
}
使用照明\Support\Collection
您可以:
$staffs->groupBy(function ($staff) {
return $staff->staff_id;
});
假设我有一个列表表,下面是结构
lists
-------
id | staff_id | column_id (int) | data(string) |
现在我创建ListController并编写getstaff()方法,该方法返回staff\u id的特定数据
public function getstaff($id){
$staffs = List::where('staff_id','=',$id)->get();
return $staffs;
}
现在你可以在刀片上显示
@foreach($staffs as $staff)
<li>{{$staff->column_id}}</li>
<li>{{$staff->data}}</li>
@endforeach
@foreach($staff作为$staff)
{{$staff->column_id}
{{$staff->data}
@endforeach
是$staff
的实例照亮\Support\Collection
?如果我不想获得一个特定的staff\u id并将它们全部作为嵌套数组来获取,该怎么办?Hey只是想看看您对此是否有任何想法:这使得每个循环需要两个foreach是吗?那么,如果我想通过使$staff[$data->column\u id]=$data->data来扁平化每个$staff,该怎么办代码>我可以用嵌套的for循环来实现这一点,但我想知道是否有一种方法可以不用嵌套的for循环来实现这一点?谢谢