два JSON-данных одинаковы, нет необходимости отображать

#laravel #api #lumen

#laravel #API #lumen

Вопрос:

здесь у меня есть два json-данных, в данных json в model1 judul_kontrak и model2 nama_proyek есть два одинаковых данных aa, данные aa и cc в model2 не нужно отображать, отображаются только данные model1, которые не совпадают.

выход должен быть только bb из model1

 $model1 = [
    [
        'judul_kontrak' => 'aa',
        'kode' => '01'
    ],
    [
        'judul_kontrak' => 'bb',
        'kode' => '02'
    ]
];
$model2 = [
    [
        'nama_proyek' => 'aa',
        'kode' => '05'
    ],
    [
        'nama_proyek' => 'cc',
        'kode' => '06'
    ]
];
$arr = [];
$proyek = [];
foreach ($model1 as $m1) {
    $proyek['nama_proyek'] = $m1['judul_kontrak'];
    foreach($model2 as $m2){
        if(trim(strtolower($m1['judul_kontrak'])) == trim(strtolower($m2['nama_proyek']))){
            $proyek = [];
        }
    }
    $arr[] = $proyek;
}
return $arr;
 

Комментарии:

1. Вам нужны данные из model1, которых нет в model2, верно?

2. да, мне нужны данные из model1, которых нет в model2,

Ответ №1:

вы можете использовать collect() функцию laravel

 $model1 = [
    [
        'judul_kontrak' => 'aa',
        'kode' => '01'
    ],
    [
        'judul_kontrak' => 'bb',
        'kode' => '02'
    ]
];
$model2 = collect([
    [
        'nama_proyek' => 'aa',
        'kode' => '05'
    ],
    [
        'nama_proyek' => 'cc',
        'kode' => '06'
    ]
]);
$arr = [];
        
foreach ($model1 as $item) {
    $val = $item['judul_kontrak'];
    $check = $model2->where('nama_proyek', $val)->count();
    if (!$check) {
        $arr[] = $item;
    }
}
return $arr;
 

это результат

 [{
    "judul_kontrak": "bb",
    "kode": "02"
}]
 

он возвращает только данные $model1, которых нет в model2 nama_proyek