我尝试连接数组中的重复值,但如果连接的数组具有不同的值,则应该自动创建另一个数组。
这是我的代码,在 laravel 上使用查询生成器
DB::table('users')
->select(
'users.id',
'users.first_name',
'users.last_name',
'users.no_rekening',
'users.empid',
'users.no_rekening',
'users.detail',
'users.is_approve',
'users.is_active',
'karyawan_project.project_id',
'project.nama as nama_project',
'client.nama as nama_client'
)->leftJoin(
'karyawan_project',
'users.id','=','karyawan_project.karyawan_id',
'client.nama '
)->join(
'project',
'karyawan_project.project_id','=','project.id'
)->join('spk','project.spk_id','=','spk.id')
->join('client','spk.client_id','=','client.id')
->where('tipe', 2)
->whereIn('is_active', [1,0,2])
->orderBy('users.id')
->get();
和结果
1 => {#747 ▼
+"id": 17
+"first_name": "Dadan R"
+"last_name": "Hadiansyah"
+"no_rekening": "1150006713467"
+"empid": "01180104"
+"detail": ""
+"is_approve": 1
+"is_active": 1
+"project_id": 4
+"nama_project": "Driver Manager & Operasional"
+"nama_client": "PT. TRANSPORTASI GAS INDONESIA"
}
2 => {#797 ▼
+"id": 18
+"first_name": "Setia"
+"last_name": "Darma"
+"no_rekening": "1150006713475"
+"empid": "01180105"
+"detail": null
+"is_approve": 1
+"is_active": 1
+"project_id": 181
+"nama_project": "Driver Operasional"
+"nama_client": "PT. TRANSPORTASI GAS INDONESIA"
}
3 => {#790 ▼
+"id": 18
+"first_name": "Setia"
+"last_name": "Darma"
+"no_rekening": "1150006713475"
+"empid": "01180105"
+"detail": null
+"is_approve": 1
+"is_active": 1
+"project_id": 4
+"nama_project": "Driver Manager & Operasional"
+"nama_client": "PT. TRANSPORTASI GAS INDONESIA"
}
4 => {#796 ▼
+"id": 18
+"first_name": "Setia"
+"last_name": "Darma"
+"no_rekening": "1150006713475"
+"empid": "01180105"
+"detail": null
+"is_approve": 1
+"is_active": 1
+"project_id": 6
+"nama_project": "PENGAMANAN STATION MBK"
+"nama_client": "PT. PERMATA GRAHA NUSANTARA"
}
5 => {#757 ▼
+"id": 19
+"first_name": "Ardian"
+"last_name": "Ismail"
+"no_rekening": "1150004433837"
+"empid": "01180106"
+"detail": null
+"is_approve": 1
+"is_active": 0
+"project_id": 4
+"nama_project": "Driver Manager & Operasional"
+"nama_client": "PT. TRANSPORTASI GAS INDONESIA"
结果具有重复值,其中 id = 18 且 nama_project 不同
我想要的是, id 将重复值加入到一个数组中 还有具有不同值的 nama_project
喜欢
1 => {#747 ▼
+"id": 17
+"first_name": "Dadan R"
+"last_name": "Hadiansyah"
+"no_rekening": "1150006713467"
+"empid": "01180104"
+"detail": ""
+"is_approve": 1
+"is_active": 1
+"project_id": 4
+"nama_project": "Driver Manager & Operasional"
+"nama_client": "PT. TRANSPORTASI GAS INDONESIA"
}
2 => {#797 ▼
+"id": 18
+"first_name": "Setia"
+"last_name": "Darma"
+"no_rekening": "1150006713475"
+"empid": "01180105"
+"detail": null
+"is_approve": 1
+"is_active": 1
+"project_id": 181
+"nama_project": ▼{
+"Driver Operasional"
+"Driver Manager & Operasional"
+"PENGAMANAN STATION MBK"
}
+"nama_client": "PT. TRANSPORTASI GAS INDONESIA"
}
最佳答案
由于您已通过 users.id 对结果进行排序。假设您将结果保存在 $users
中,那么您可以执行以下操作:
$usersWithMergedProjects = [];
$previous_id = 0;
foreach($users as $user){
if($user->id == $previous_id){
array_push($usersWithMergedProjects[$user->id]->nama_projects, $user->nama_project);
} else {
$usersWithMergedProjects[$user->id] = $user;
$usersWithMergedProjects[$user->id]->nama_projects = [];
array_push($usersWithMergedProjects[$user->id]->nama_projects, $user->nama_project);
}
$previous_id = $user->id;
unset($usersWithMergedProjects[$user->id]->nama_project);
}
注意:如果您遇到任何错误,请截取错误的屏幕截图。
关于mysql - 如果重复值则连接数组 (Laravel),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55841491/