关于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
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
aab
最佳答案

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

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

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

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

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!