نمایش تاریخ شمسی

2 ماه پیش
توسط toka آپدیت شد
toka ( 1595 تجربه )
2 ماه پیش

سلام دوستان
چطور میتونم تاریخ میلادی لیستی از سفارشات رو که از طریق ajax از دیتابیس گرفتم و در جدول قرار دادم رو تبدیل به شمسی کنم .
نمایش تاریخ برای مدیریت باید به صورت شمسی باشد .
(در چه مرحله و کجا باید این تبدیل تاریخ رو انجام بدم)؟

بهترین پاسخ انتخاب شده توسط toka
سیدعلی موسوی
2 ماه پیش

خب چون داری اطلاعات رو کوئری میزنی باس از resource استفاده کنی (میتونی تویی مدل خودتون toArray رو بازنویسی کنید ولی پیشنهاد میکنم از resource استفاده کنید)
اول کامند زیر رو میزنی که یک ریسورس برات ایجاد بشه

php artisan make:resource OrderResource

بعدش تویی مسیر app\Http\Resources یک فایل به نام OrderResource وجود داره که تویی فاکنش toArray شما میایی داده هات رو overwrite میکنی که اونجا قبل از اینکه فیلد created_at بازگشت داده بشه با توابع verta تبدیل میکنی مثال میشه:

    public function toArray($request)
    {
        return [
            // فیلدهای دیگه ات رو هم مینویسی بعلاوه این تاریخ زیری
            'created_at' => verta($this->created_at),
        ];
    }

کد تویی کنترلرتون اینجوری باس استفاده کنی

use App\Http\Resources\OrderResource;

public function getOrders(){
    $orders=Order::whereDate('created_at',Carbon::today())->with('customer')->orderBy('created_at','DESC')->get();
    return new OrderResource($orders);
}
smart ( 9050 تجربه )
2 ماه پیش

سلام. من برای اینکار معمولا از پکیج verta استفاده میکنم و خوب هم هست. تاریخ ها رو بصورت میلادی ذخیره میکنم و بعد با این پکیج تبدیل به شمسی میکنم. از این پکیج هم میشه توی controller هم توی view استفاده کرد.

سیدعلی موسوی ( 88896 تجربه )
2 ماه پیش
تخصص : سی شارپ و پی اچ پی

(در چه مرحله و کجا باید این تبدیل تاریخ رو انجام بدم)؟

در کنترلر همانجایی که ایجکس رو ریترن میکنی

toka ( 1595 تجربه )
2 ماه پیش

@juza66
ممنون از راهنماییتون .
من از پکیج ورتا استفاده می کنم - امکانش هست یه نمونه کد از تبدیل تاریخ برام بفرستین .

سیدعلی موسوی ( 88896 تجربه )
2 ماه پیش
تخصص : سی شارپ و پی اچ پی

کد کنترلرت رو بذار برات اصلاح کنم

toka ( 1595 تجربه )
2 ماه پیش

@juza66

 public function getOrders(){

                $orders=Order::whereDate('created_at',Carbon::today())->with('customer')->orderBy('created_at','DESC')->get();

        return $orders;

    }
سیدعلی موسوی ( 88896 تجربه )
2 ماه پیش
تخصص : سی شارپ و پی اچ پی

خب چون داری اطلاعات رو کوئری میزنی باس از resource استفاده کنی (میتونی تویی مدل خودتون toArray رو بازنویسی کنید ولی پیشنهاد میکنم از resource استفاده کنید)
اول کامند زیر رو میزنی که یک ریسورس برات ایجاد بشه

php artisan make:resource OrderResource

بعدش تویی مسیر app\Http\Resources یک فایل به نام OrderResource وجود داره که تویی فاکنش toArray شما میایی داده هات رو overwrite میکنی که اونجا قبل از اینکه فیلد created_at بازگشت داده بشه با توابع verta تبدیل میکنی مثال میشه:

    public function toArray($request)
    {
        return [
            // فیلدهای دیگه ات رو هم مینویسی بعلاوه این تاریخ زیری
            'created_at' => verta($this->created_at),
        ];
    }

کد تویی کنترلرتون اینجوری باس استفاده کنی

use App\Http\Resources\OrderResource;

public function getOrders(){
    $orders=Order::whereDate('created_at',Carbon::today())->with('customer')->orderBy('created_at','DESC')->get();
    return new OrderResource($orders);
}
برای ارسال پاسخ باید وارد سایت شوید