Laravel updateOrCreate 方法 - 更新与匹配的相同列。

3
updateOrCreate方法中,我们传递两个参数。第一个参数用于检查是否匹配,第二个参数携带需要更新的数据。
但在我的情况下,我需要更新我传递给第一个参数的相同数据。但如果我在第二个参数中传递相同的数据,则无法更新它。
有什么解决方案吗?

你有检查过upsert吗?https://laravel.com/docs/9.x/eloquent#upserts。它不像updateOrCreate那样检查第二个参数。所以我认为它可能对你的情况有帮助。 - Bismark Asiedu Asante
你收到了什么错误? - Saroj Shrestha
1
你有检查过 Model 的 $fillable 属性吗?可能的问题是你没有在 $fillable 中声明这些列。 - Siddhartha Choubey
@SiddharthaChoubey 我在我的模型中使用了$guarded。 - Wakil Ahmed
@BismarkAsieduAsante 不,我还没有检查它。让我试一下。谢谢! - Wakil Ahmed
1个回答

3

使用updateOrCreate方法时,第二个参数是可选的,因此您可以忽略它。

您可能希望查看Illuminate\Database\Eloquent\Builder::updateOrCreate()方法以了解其工作原理。

阅读您的评论,您可以像这样做:

YourModel::updateOrCreate(
    ['your_field' => 9],
    ['your_field' => 10]
);

// Or
YourModel::where('your_field', 9)->update(['your_field' => 10]);

那在我的情况下是不可能的,因为我要改变这个值。例如,我正在检查一个值是否为9,如果匹配,则将其升级到10。我该如何实现这一点? - Wakil Ahmed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接