php - Laravel Eloquent updateOrCreate 使用预填充模型

标签 php database laravel eloquent

在整个代码中,我通过从 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/

相关文章:

php - 如何在 laravel moltin 购物车中添加多个具有不同尺寸的相同 ID 的产品?

php - 如何访问和编辑 HTML Wordpress 代码?

javascript - 如何在内容类型设置为 application/javascript 的 PHP 中回显正斜杠

php - Laravel Eloquent orWhere 查询

php - PHP 数组中的重复数据条目

mysql - 通过查询另一个表来填充一个表的值

mysql - 用于存储个人资料图片的最佳数据库设计

laravel - 如何在packalyst提交项目

php - 使用phpspreadsheet循环返回行

laravel 5.4 指定的key太长,为什么数字191