【发布时间】:2020-08-21 21:38:16
【问题描述】:
我正在尝试更新今天日期小于创建记录前 30 天的所有记录 + 持续时间值。例如
今天小于 created_at + 50(天)- 30 天通知期。
$subscriptions = Order::whereNotNull('service_id')->with('service')->get();
foreach($subscriptions as $subscription){
Order::where('id', $subscription->id)
->where(Carbon::today(), '<', Carbon::parse($subscription->created_at)->addDays($subscription->service->duration)->subDays(30))
->update(['status_id' => 7]);
}
我得到的错误是;
SQLSTATE[42S22]: Column not found: 1054 Unknown column '2020-08-21 00:00:00' in 'where clause' (SQL: update `orders` set `status_id` = 7
, `orders`.`updated_at` = 2020-08-21 21:01:58 where `id` = 3 and date(`2020-08-21 00:00:00`) < 2021-01-13)
【问题讨论】:
-
调用
whereDate时需要指定列。试试->whereDate('created_at', ...。 -
那么在这种情况下我必须使用'where',因为我不想比较列值?
-
不,只需将日期列的名称添加为第一个参数:
whereDate('created_at', '<', '2020-08-21 00:00:00')。 -
我没有比较查询中的日期列?
-
@DigitalDrifter 是的,
+ 50 (days) - 30 day您不能按照说明附加到列名。如果您认为自己有一些可行的方法,我们非常欢迎您提交问题的答案。
标签: php laravel eloquent php-carbon