Laravel - Как динамически реализовать мой API - PullRequest
0 голосов
/ 17 июня 2020

Я использую внешний API с помощью Guzzle и сохраняю его в базе данных:

use App\Employee;

public function handle()
{  
    $client = new GuzzleHttp\Client();
    $res = $client->request('GET','https://api.employees.net/allemployees');
    $clientdatas = json_decode($res->getBody()->getContents(), true);

   foreach($clientdatas as $clientdata)
    {
        $employee = HrEmployee::updateOrCreate([
            'employee_code' => $clientdata['staff_id'],
        ],
        [
            'first_name'                            => $clientdata['first_name'],
            'last_name'                             => $clientdata['last_name'],
            'other_name'                            => $clientdata['middle_name'],
            'dept_code'                            => $clientdata['department_id']
        ]);  
     }
  }

В настоящее время у меня есть это if

'employee_code' => $ clientdata ['staff_id' ],

существует, он должен обновлять

        [
            'first_name'                            => $clientdata['first_name'],
            'last_name'                             => $clientdata['last_name'],
            'other_name'                            => $clientdata['middle_name'],
            'dept_code'                            => $clientdata['department_id']
        ]);  

, он должен сохранять новые записи.

Однако я хочу изменить его, если

' employee_code '=> $ clientdata [' staff_id '], существует, он должен обновиться

        [
            'first_name'                            => $clientdata['first_name'],
            'last_name'                             => $clientdata['last_name'],
            'other_name'                            => $clientdata['middle_name'],
        ]);  

за исключением

        [
           'dept_code'                            => $clientdata['department_id']
        ]);  

Если нет, он должен сохранить все

Как добиться этого?

Спасибо

1 Ответ

0 голосов
/ 17 июня 2020

Создание полезных данных на основе $clientdata['staff_id']

$payloads = [
   'first_name' => $clientdata['first_name'],
   'last_name' => $clientdata['last_name'],
   'other_name' => $clientdata['middle_name']
];

if(!isset($clientdata['staff_id']) { // only add dept_code if staff_id is not set
   $payloads['dept_code'] = $clientdata['department_id'];
}

$employee = HrEmployee::updateOrCreate([
            'employee_code' => $clientdata['staff_id'],
        ], $payloads);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...