【发布时间】:2017-11-05 15:27:56
【问题描述】:
我在理解 updateOrCreate Eloquent 方法时遇到问题。
我有一个简单的数据库,我在其中保存来自 API 的信息并每 x 分钟运行一次。
如果数据库中不存在该行,我需要执行 INSERT,否则只需执行 UPDATE 并更新更改的数据。
我们如何在 Laravel 中实现这个功能?
这就是我现在所拥有的,但它会在所有行中重写相同的数据。
不确定我是否理解正确。
我基本上是在传递一个“条件”,即。需要检查它们是否唯一的字段-campaign_id+variation_id 应该是唯一的。 (它由 MySQL 中的 UNIQUE 键支持)和我的数据数组:
$data = [
'campaign_id' => $variation['campaign_id'],
'variation_id' => $variation['variation_id'],
'name' => $variation['name'],
'description' => $variation['description'],
];
MyModel::updateOrCreate( ['campaign_id' => $variation['campaign_id'], 'variation_id' =>
$variation['variation_id'] ], $data);
它似乎与 updateOrInsert 一起工作,这是一种查询生成器方法,但我想用 Eloquent 实现这一点,认为这很容易。 Plus Query Builder 不会为我填写时间戳。
感谢任何提示!
【问题讨论】:
-
您是否在模型中设置了受保护的 $primaryKey 属性?
-
是的,它实际上设置为。受保护的 $primaryKey = 'campaign_id';它会引起一些问题吗?
标签: mysql laravel eloquent laravel-eloquent