【发布时间】:2021-11-26 03:05:48
【问题描述】:
我正在尝试使用 Laravel updateOrCreate 根据 ID 是否存在来更新本月和上个月的记录。
\App\Models\Result::updateOrCreate(
[
'id' => $request->get('id'),
// where created_at is within the last 2 months
'created_at' => [
'>',
\Carbon\Carbon::now()->startOfMonth()->subMonthsNoOverflow()
],
],
[
'discipline_one' => $request->get('d-one'),
'discipline_two' => $request->get('d-two'),
'discipline_three' => $request->get('d-three'),
'discipline_four' => $request->get('d-four'),
'discipline_five' => $request->get('d-five'),
'discipline_six' => $request->get('d-six'),
]
);
如果 ID 存在,并且结果在当前月份或上个月,则创建新记录而不是更新记录。
预期输入:1(从上个月开始存在)
预期输出:记录已更新
预期输入:2(不存在或不在 2 个月内)
预期输出:创建新记录
更新:
使用建议的答案,
'id' => $request->get('id'),
'created_at' => \App\Models\Result::whereBetween('created_at', [
\Carbon\Carbon::now()->startOfMonth()->subMonthsNoOverflow(),
\Carbon\Carbon::now()->endOfMonth(),
]),
我得到错误:
Illuminate\Database\Eloquent\Builder 类的对象无法转换为字符串
【问题讨论】: