mysql - 更新或创建条件数据作为输入
问题描述
我有这段代码,这会导致两个查询。
$profile = $profile_class::updateOrCreate([
'user_id' => $user->id,
],
[
'data' => $profile_data,
]);
if($request->type == 'volontario' && $request->filled('association_id')) {
$profile->association_id = $request->association_id;
$profile->association_token = uniqid(md5($user->id));
$profile->save();
}
有什么方法可以只对数据库执行一个查询吗?
解决方案
您可以更改应更新的数据,具体取决于您的请求是否处于正确状态。为此,association_id
它association_token
应该是可填充的。
$fillData = [
'data' => $profile_data,
];
if($request->type == 'volontario' && $request->filled('association_id')) {
$fillData['association_id'] = $request->association_id;
$fillData['association_token'] = uniqid(md5($user->id));
}
$profile = $profile_class::updateOrCreate([
'user_id' => $user->id,
],
$fillData
);
推荐阅读
- php - MySQL:创建表克隆,用原始更新列
- python - 如何在 Python 中从多个 PDF 中提取特定表格
- python - 为什么我的 dict 在 python 的这个循环中被覆盖?
- google-drive-api - 如何获取谷歌驱动器中文件的文件路径以在 colab 中使用?
- javascript - FIREBASE 错误:服务帐户对象必须包含字符串“private_key”属性
- sql - BigQuery - SQL 将 Month DD、YYYY 格式的字符串转换为 DATE
- python - 编写日历程序时出现错误:TypeError: 'int' object is not callable
- python - 查找 base64 XML 字符串的第二种编码
- windows - 如何在grafana上按进程准确过滤cpu使用情况
- python - Microsoft Graph Api 中的后期操作耗时过长