مشکل تاریخ در دستور toarray() لاراول
تو یکی از پروژه ها به مشکل اشتباه بودن تاریخ برخوردم . یعنی اینکه علارغم درست بودن تنظیمات زمانی لاراول ولی باز منطقه زمانی رو اعمال نمیکرد .
این مشکل با دستور get خالی پیش نمیومد ولی وقتی get()->toarray رو میزدیم اشتباه میشد .
$data = Data::orderby('id', 'desc')->limit(10)->get()->toarray();
دیتایی که تو دیتابیس ذخیره شد بود : 2022-08-13 10:21:43
دیتایی که نشون میداد :2022-08-13 05:21:51
یعنی داشت همون utc رو نمایش میداد . برای حل این مشکل کافیه داخل model خودتون اینجوری تعریف کنید :
use Carbon\Carbon; public function getCreatedAtAttribute($value) { return Carbon::parse($value)->timezone('Asia/Tehran')->format('Y-m-d H:i:s'); }
همچنین داخل فایل config/app.php قسمت تایم زون به این شکل باید باشه :
'timezone' => env('APP_TIMEZONE', 'Asia/Tehran'),