使用模型实例更新或创建



我正在使用PHP 7.1.33Laravel Framework 5.8.36

我正在从数据库row-by-row接收数据,并且正在使用如下所示updateOrCreate()创建一个模型:

foreach ($arr as $v) {
$product = new Product();
$product->name = $v['name'];
$product->url = $v['url'];
$product->price = $v['price'];
// save
$matchThese = ['name' => $name, 'url' => $url];
$product->updateOrCreate($matchThese);
}

但是,不会创建任何内容。

有什么建议我做错了什么吗?

感谢您的回复!

updateOrCreate需要2个参数($attributes$values(。

$attributes是一个包含键值对的数组,基本上将用于 where 子句,即它将检查数据库中传递的属性。

$values是一个数组,其中包含要在数据库中更新的内容的键值对。

如果它在数据库中找不到与第一个数组匹配的行,它将合并数组中的值以创建新行。

要实现你所追求的目标,你可以做到:

Product::updateOrCreate(
['name' => $v['name'], 'url' => $v['url']],
['price' => $v['price']]
);

试试这种方式

Product::updateOrCreate(
['name' => $name, 'url' => $url],
['price' => v['price']],
)

第一个参数用于搜索寄存器。 第二个参数设置新值。

有关更多信息,您可以阅读雄辩:入门 - 文档

最新更新