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