mysql - 如果重复值则连接数组 (Laravel)

标签 mysql laravel

我尝试连接数组中的重复值,但如果连接的数组具有不同的值,则应该自动创建另一个数组。

这是我的代码,在 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/

相关文章:

mysql - PHPMyAdmin:1800 秒内无事件;请重新登录错误

php - 如何访问 Carbon 对象类型?

php - Laravel Cache Facade - set 与 put

php - 设置 Mandrill 模板 Laravel

php - 如何解决 Exception It is unsafe to run Dusk in production in laravel 5.5?

MySQL InnoDB 插入很慢

MYsql - 获取插入ID - sql

mysql - 无法导入 MYSQL 函数 - 错误 1064 (42000)

mysql - 是否可以将此子查询转换为连接?

php - laravel 文件不存在或不可读