احمد نادری

توسعه دهنده فول استک

author
author

احمد نادری

توسعه دهنده فول استک

مشکل تاریخ در دستور 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'),

 

درباره من
  • سلام به وب سایت من خوش اومدید ! از سال 1388 که وارد دنیای برنامه نویسی شدم تجربیات خودم رو از پروژه های مختلف به دست آوردم و همیشه سعی کردم تا مهارت های فنی و رفتاری خودم رو ارتقا بدم تا بتونم برای خودم و سازمانی که در آن کار می کنم بهترین باشم . من عاشق یادگیری هستم و همیشه از چالش های جدید هیجان زده میشم چون اونارو کلید موفقیت و رشد خودم می دونم.
  • @ahmadnaderi01
arrow