使用updateOrCreate 全部加到条件了 为什么出现写入而不是更新,百思不得其解

```php
  SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '727-5-1-3.10-1.36-2022-06-24 16:46:57' for key 'm_c_t_w_l_c' (SQL: insert into `user` (`m`, `c`, `t`, `w`, `l`, `cc`, `updated_at`, `created_at`) values (727, 5, 1, 3.10, 1.36, 2022-06-24 16:46:57, 2022-06-26 12:36:57, 2022-06-26 12:36:57))
//写入代码是
User::query()->updateOrCreate(['m' => $m, 'c' => $c, 't' => 1, 'w' => $w, 'l' => $l, 'cc' => $c], []);

全部加入查询条件了理论上应该更新呀 为什么还是写入了 写入了就与唯一冲突了

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
最佳答案

两个 c

1年前 评论
php_yt (作者) 1年前
tiantian10000 (楼主) 1年前
讨论数量: 17

更新的话得有条件吧,没有条件怎么确认是更新。pk值在更新里也没有吧

1年前 评论

要带着id

1年前 评论
tiantian10000 (楼主) 1年前

两个 c

1年前 评论
php_yt (作者) 1年前
tiantian10000 (楼主) 1年前
在下面的示例中,如果存在「departure」位置为「Oakland」且「destination」位置为「San Diego」的航班,则其「price」和「discounted」列将被更新。 如果不存在这样的航班,将创建一个新航班,该航班具有将第一个参数数组与第二个参数数组合并后的属性:

$flight = Flight::updateOrCreate(
    ['departure' => 'Oakland', 'destination' => 'San Diego'],
    ['price' => 99, 'discounted' => 1]
);

这个不需要id呀 第一个数组就是条件 @deatil @薄荷蓝的晴天

1年前 评论
deatil 1年前
薄荷蓝的晴天 1年前
singrun 1年前
tiantian10000 (作者) (楼主) 1年前
MArtian 1年前
playmaker 1年前
deatil 1年前
Benn888 1年前
Ranger9527 1年前
薄荷蓝的晴天 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!