关于Carbon的疑问

laravel 版本是 8.5,例子 1 和例子 2 中,都是加 7 天,为什么 $user->created_at 本身没有变化,是因为 laravel 自动把模型字段的 Carbon 类型转为 CarbonImmutable 类型了吗?

例子 1#

 use Carbon/Carbon;
 use App/Models/User;

 $user = new User;
 $user->created_at = Carbon::now();
 \Log::info($user->created_at->toDateTimeString());//2022-04-29 11:31:28
 $user->created_at->addDays(7);
 \Log::info($user->created_at->toDateTimeString());//还是 2022-04-29 11:31:28

例子 2#

 use Carbon/Carbon;

 $now = Carbon::now();
 \Log::info($now->toDateTimeString());//2022-04-29 11:31:28
 $now->addDays(7);
 \Log::info($now->toDateTimeString());//变成了 2022-05-06 11:31:28
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
aab
最佳答案

Laravel Model 中的 DateTime 属性的值,是以字符串的形式保存的,get 的时候会转换成为一个 Carbon 对象,set 的时候会转换成为一个字符串。所以你在外边修改没有作用。

3年前 评论
williamQian (楼主) 3年前
讨论数量: 2
aab

Laravel Model 中的 DateTime 属性的值,是以字符串的形式保存的,get 的时候会转换成为一个 Carbon 对象,set 的时候会转换成为一个字符串。所以你在外边修改没有作用。

3年前 评论
williamQian (楼主) 3年前