افشار محمودیان
3 سال پیش توسط افشار محمودیان مطرح شد
5 پاسخ

تغییر اتریبیوت مدل

سلام
من میخوام اتریبیوت مدلم رو تغییر بدم و اوور راید کنم ، اما تغییرات من اعمال نمیشه و همون مقدار قبلی رو داره.
مثلا:

        $user->birthday = Helper::DbFormatToDateString($user->birthday);
        return view('users.edit')->with('user', $user);

تو مدل user تابع setBirthday استفاده کردم اما تغییرات من اعمال نشد.

باید چه کنم؟


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش آپدیت شد
1

سلام.
بعد از اعمال تغییراتتون در آخر باید یکبار متد 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);

افشار محمودیان
تخصص : برنامه نویس
@afsharmahmoodian 3 سال پیش مطرح شد
0

@mhyeganeh
نه اشتباه متوجه شدین ، من نمیخوام دیتابیس رو آپدیت کنم ...
اطلاعات تو دیتابیس از نوع dateTime هست مثل : "2021-10-04 00:00:00" و من اون رو مثلا به "1399/07/01" تغییر میدم و به نمایش میزارم . این کار رو تو قسمت edit اطلاعات انجام میدم چون از datePicker فارسی استفاده میکنم و وقتی فرمت مثل "1399/07/01" نباشه چیزی نشون نمیده.


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش آپدیت شد
1

خوب همین عبارت Helper::DbFormatToDateString($user->birthday) رو از controller حذف کنید و مستقیما تو view و blade استفاده کنید.

یعنی اینجوری:

//به جای این:
{{ $user->birthday }}

//بشه این:
{{ Helper::DbFormatToDateString($user->birthday) }}

راه های زیاد و شاید بهتر دیگری هم وجود داشته باشه:
مثلا استفاده از پکیجی مثل morilog/jalali و تبدیل و فرمت دهی تاریخ میلادی با استفاده از متدهای jdate() و format()
یا استفاده از قابلیت Accessor ها در لاراول و ایجاد یک attribute مجازی
همچنین می‌تونید با استفاده از پراپرتی append$ در مدلتون بصورت اتومات فیلد تاریخ تولد بصورت شمسی هم اضافه کنید. (مثال)


افشار محمودیان
تخصص : برنامه نویس
@afsharmahmoodian 3 سال پیش مطرح شد
0

@mhyeganeh

این کار تو ویو نمیشه ( البته هیچوقت نمیشه که نشه 😄 ) ...
از InfyOmLabs استفاده میکنم و ویو ها تو هسته ساخته و پرداخته میشه.


افشار محمودیان
تخصص : برنامه نویس
@afsharmahmoodian 3 سال پیش مطرح شد
0

من مشکلم رو با جاوا اسکریپت حل کردم اما این سوال همچنان باقیست ...
من تو فالکون هم این مشکل رو دارم ...
قضیه چیه ؟


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام