laravel - Laravel - 如何动态实现我的 API
问题描述
我正在使用 Guzzle 使用外部 API 并将其保存到数据库中:
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']
]);
}
}
目前我所拥有的是,如果
'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']
]);
如果没有,它应该保存一切
我如何实现这一目标?
谢谢
解决方案
根据以下内容创建有效负载$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);
推荐阅读
- postgresql - 如何使用自定义更改 java 类在命令行上运行 Liquibase?
- c# - 如何防止关于域/目的的继承财产和子财产的干扰?
- java - Java 代码中的 AspectJ 切入点方法签名
- python - 在Django的http请求中多次重定向到一个具有不同参数的站点
- javascript - 如何遮蔽 ChartJS 线的一部分 grph=
- c++ - How can I "convert" ISO-8859-7 strings to UTF-8 in C++?
- node.js - MongoDB聚合与数组对象值的总和
- swift - SwiftUI VStack 对齐错误?
- excel-formula - 在excel中制定规则时遇到问题
- docker - Dockerfile CMD 忽略参数