سلام
من میخوام اتریبیوت مدلم رو تغییر بدم و اوور راید کنم ، اما تغییرات من اعمال نمیشه و همون مقدار قبلی رو داره.
مثلا:
$user->birthday = Helper::DbFormatToDateString($user->birthday);
return view('users.edit')->with('user', $user);
تو مدل user تابع setBirthday استفاده کردم اما تغییرات من اعمال نشد.
باید چه کنم؟
سلام.
بعد از اعمال تغییراتتون در آخر باید یکبار متد save() رو اجرا کنید تا کوئری اجرا بشه و اطلاعات در دیتابیس ذخیره شوند:
$user->birthday = Helper::DbFormatToDateString($user->birthday);
$user->save();
return view('users.edit')->with('user', $user);
یک روش دیگه هم اینه که از متد update به شکل زیر استفاده کنید:
$user->update([
'birthday' => Helper::DbFormatToDateString($user->birthday),
]);
return view('users.edit')->with('user', $user);
@mhyeganeh
نه اشتباه متوجه شدین ، من نمیخوام دیتابیس رو آپدیت کنم ...
اطلاعات تو دیتابیس از نوع dateTime هست مثل : "2021-10-04 00:00:00" و من اون رو مثلا به "1399/07/01" تغییر میدم و به نمایش میزارم . این کار رو تو قسمت edit اطلاعات انجام میدم چون از datePicker فارسی استفاده میکنم و وقتی فرمت مثل "1399/07/01" نباشه چیزی نشون نمیده.
خوب همین عبارت Helper::DbFormatToDateString($user->birthday)
رو از controller حذف کنید و مستقیما تو view و blade استفاده کنید.
یعنی اینجوری:
//به جای این:
{{ $user->birthday }}
//بشه این:
{{ Helper::DbFormatToDateString($user->birthday) }}
راه های زیاد و شاید بهتر دیگری هم وجود داشته باشه:
مثلا استفاده از پکیجی مثل morilog/jalali و تبدیل و فرمت دهی تاریخ میلادی با استفاده از متدهای jdate() و format()
یا استفاده از قابلیت Accessor ها در لاراول و ایجاد یک attribute مجازی
همچنین میتونید با استفاده از پراپرتی append$ در مدلتون بصورت اتومات فیلد تاریخ تولد بصورت شمسی هم اضافه کنید. (مثال)
این کار تو ویو نمیشه ( البته هیچوقت نمیشه که نشه 😄 ) ...
از InfyOmLabs استفاده میکنم و ویو ها تو هسته ساخته و پرداخته میشه.
من مشکلم رو با جاوا اسکریپت حل کردم اما این سوال همچنان باقیست ...
من تو فالکون هم این مشکل رو دارم ...
قضیه چیه ؟
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟