在整个代码中,我通过从 API 调用获取数据来填充 Eloquent 模型。填充模型后,我去保存它,但它有可能存在于数据库中(主 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();
关于php - Laravel Eloquent updateOrCreate 使用预填充模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52226618/