php - Laravel Eloquent updateOrCreate 使用预填充模型
问题描述
在整个代码中,我通过从 API 调用中获取数据来填充一个雄辩的模型。填充模型后,我会保存它,但它有可能存在于数据库中(主 ID)。
像这样填充模型似乎很愚蠢:
$lead = new Lead;
$lead->id = '123';
$lead->name = 'Tom';
$lead->address = '121 main st';
然后必须这样做才能使用 updateOrCreate:
$lead = Lead::updateOrCreate(
['id' => $lead->id],
[
'name ' => $lead->name,
'address ' => $lead->address,
]
);
我也试过:
$lead = new Lead;
$lead = Lead::find($place);
$lead->id = '123';
$lead->name = 'Tom';
$lead->address = '121 main st';
$lead->save();
但当然,这不起作用,因为如果潜在客户不存在,您将返回一个空对象,并且无法从空值创建默认对象。
解决方案
在第二个代码中,您将覆盖$lead
. 你想要的是firstOrNew()
$lead = Lead::firstOrNew(123);
$lead->name = 'Tom';
$lead->address = '121 main st';
$lead->save();
你也可以试试这个方法:
if(!$lead = Lead::find(123)) {
$lead = new Lead();
$lead->id = 123;
}
$lead->name = 'Tom';
$lead->address = '121 main st';
$lead->save();
推荐阅读
- vue.js - 使用 webpack 导入 sass 部分内容同时仍然保持样式的最佳方法是什么?
- firebase - 基于用户属性的 Firebase 远程配置条件,无需指定应用
- angular - 是否可以使用项目数据插入角度库组件?
- node.js - 如何使用 ExpressJS 和 multer 添加 JWT 和字段验证
- tfs - 看板列中的多个状态
- typo3 - MenuProcessor 配置包含无效参数
- r - ggplot2 - 根据 y 数字重新排序 aes 填充,但针对因子 x 的每个实例进行计算。这可能吗?
- javascript - Javascript 为多个元素设置 CSS 类(一个元素集,其余元素未设置)
- python - 在 NetworkX 中绘制孤立节点
- android - 设置 StreamVolume 时可抛出