将日期更新到 laravel 后的第二天
update date to next day in laravel
我想将我的日期更新为第二天的日期。我该怎么做?
现在我用这个来做。
$calendar = Calendar::find($id);
$calendar->update(['started_at' => $calendar->started_at->addDay(1)));
或者我可以做到
$calendar->started_at->addDay(1);
$calendar->save();
但是这个解决方案对我不利,因为数据库 中有 2 个请求。我不会只使用一个请求来做到这一点。
有没有办法将日期动态更新为第二天的日期?
例如
Calendar::where('id', $id)->updateToNextDay('started_at');
我也发现 sql 等价物
UPDATE `calendar` SET `started_at` = `started_at` - INTERVAL 1 DAY;
感谢关注。
您可以在日历模型中编写自己的方法,例如,
public function updateToNextDay(string $column)
{
$this->update([
$column => \Db::raw("$column + INTERVAL DAY 1");
]);
}
未测试,但应该可以。
这应该有效
Calendar::where('id', $id)->update([
'started_at' => DB::raw("DATE_ADD(started_at, INTERVAL 1 DAY)")
]);
告诉我:)
$startDate = date_timestamp_get($calendar->started_at);
$date = date('Y-m-d H:i:s', strtotime('+1 day', $startDate));
$calendar->update(['started_at' => $date]);
Calendar::where('id', $id)->update()
只是语法糖。这会将您代理到查询生成器并且与 运行ning DB::table('calendar')->where('id', $id)->update();
相同
ORM 中模型的强大之处在于从数据库中获取数据,将其映射到对象中的属性,然后操作该对象。单个 select 更新的开销非常小,如果您担心开发阶段的开销,您可能优化过度了。
如果您希望放弃 select,您可以使用带有原始 SQL 表达式的查询生成器。两者都将调用查询生成器和 运行 完全相同的查询:
Calendar::where('id', $id)
->update(['started_at' => DB::raw("started_at + INTERVAL 1 DAY")]);
或
DB::table('calendars')->where('id', $id)
->update(['started_at' => DB::raw("started_at + INTERVAL 1 DAY")]);
我想将我的日期更新为第二天的日期。我该怎么做?
现在我用这个来做。
$calendar = Calendar::find($id);
$calendar->update(['started_at' => $calendar->started_at->addDay(1)));
或者我可以做到
$calendar->started_at->addDay(1);
$calendar->save();
但是这个解决方案对我不利,因为数据库 中有 2 个请求。我不会只使用一个请求来做到这一点。
有没有办法将日期动态更新为第二天的日期?
例如
Calendar::where('id', $id)->updateToNextDay('started_at');
我也发现 sql 等价物
UPDATE `calendar` SET `started_at` = `started_at` - INTERVAL 1 DAY;
感谢关注。
您可以在日历模型中编写自己的方法,例如,
public function updateToNextDay(string $column)
{
$this->update([
$column => \Db::raw("$column + INTERVAL DAY 1");
]);
}
未测试,但应该可以。
这应该有效
Calendar::where('id', $id)->update([
'started_at' => DB::raw("DATE_ADD(started_at, INTERVAL 1 DAY)")
]);
告诉我:)
$startDate = date_timestamp_get($calendar->started_at);
$date = date('Y-m-d H:i:s', strtotime('+1 day', $startDate));
$calendar->update(['started_at' => $date]);
Calendar::where('id', $id)->update()
只是语法糖。这会将您代理到查询生成器并且与 运行ning DB::table('calendar')->where('id', $id)->update();
ORM 中模型的强大之处在于从数据库中获取数据,将其映射到对象中的属性,然后操作该对象。单个 select 更新的开销非常小,如果您担心开发阶段的开销,您可能优化过度了。
如果您希望放弃 select,您可以使用带有原始 SQL 表达式的查询生成器。两者都将调用查询生成器和 运行 完全相同的查询:
Calendar::where('id', $id)
->update(['started_at' => DB::raw("started_at + INTERVAL 1 DAY")]);
或
DB::table('calendars')->where('id', $id)
->update(['started_at' => DB::raw("started_at + INTERVAL 1 DAY")]);