راکت
حل
8 پاسخ

حذف timestamps از جدول در لاراول

سلام
یک Migration ایجاد و برای حذف time عبارک زیر رو حذف کردم

$table->timestamps();

اما پس از post دیتای فرم ارور زیر میاد

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'updated_at' in 'field list' (SQL: insert into `menu` (`title`, `parent_id`, `order`, `updated_at`, `created_at`) values (ارتباط, parent, 1, 2021-05-07 17:31:02, 2021-05-07 17:31:02))

یعنی خود لاراول همراه اطلاعات فرم، زمان را هم میفرسته.
راه حل چیست؟


ثبت پرسش جدید
مهدی شاه عباسیان
مهدی شاه عباسیان
تخصص :برنامه نویس
@shahabbasian5 سال پیشمطرح شد
2

در مدل مربوطه این مقدار رو اضافه کنید :

public $timestamps = false;

فرشید مرادی
فرشید مرادی
تخصص :noob
@eniack5 سال پیشمطرح شد
-1

سلام بعد از حذف timestamps رول بک یا ریست کردین مایگریشن رو؟


محمدسجاد دباغ
محمدسجاد دباغ
تخصص :برنامه نویس لاراول
@mdabbagh5 سال پیشمطرح شد
0

@eniack
بعد از حذف timestamps دستور php artisan migrate رو اجرا کردم.
الان دیتابیس اوکی هست و چنین فیلدهایی نیست اما فرم ها در لاراول خودکار این دو فیلد رو post میکنند.


مهدی شاه عباسیان
مهدی شاه عباسیان
تخصص :برنامه نویس
@shahabbasian5 سال پیشمطرح شد
2

در مدل مربوطه این مقدار رو اضافه کنید :

public $timestamps = false;

فرشید مرادی
فرشید مرادی
تخصص :noob
@eniack5 سال پیشمطرح شد
0

@mehdi.shahabbasian
چرا این اتفاق میوفته؟! یعنی خود فرم این مقدار رو post میکنه؟


مهدی شاه عباسیان
مهدی شاه عباسیان
تخصص :برنامه نویس
@shahabbasian5 سال پیشمطرح شد
4

@eniack
در هسته لاراول به صورت پیشفرض برای تمام مدل ها مقادیر created_at و updated_at ارسال میشه .

اگر دقت کنید مدل ها از کلاس Model در آدرس Illuminate\Database\Eloquent\Model ارث بری میشن
و در این کلاس هم یک trait وجود داره به نام HasTimestamps که در آدرس Illuminate\Database\Eloquent\Concerns میشه پیداش کرد
در نهایت وقتی این trait رو میخونیم میبینیم داره به صورت خودکار 2 زمان مشخص رو توی جداول بروزرسانی میکنه

در این trait یک پروپرتی وجود داره که به صورت دیفالت روشنه

public $timestamps = true;

و چندین متد که دارن کار زمان گذاری در جدول و انجام میدن.

پس اگر در مدل نیازی به timestamps نداریم خیلی راحت میایم و خاموشش میکنیم

public $timestamps = false;

فرشید مرادی
فرشید مرادی
تخصص :noob
@eniack5 سال پیشمطرح شد
1

@mehdi.shahabbasian
بسیار عالی ، ممنون از شما و اطلاعاتی که به اشتراک میزارید.


سمیرا پدیدار
سمیرا پدیدار
@samirapadidar20004 سال پیشمطرح شد
0

فن بیان عالی ای دارین مچکرم


مریم جعفری
مریم جعفری
تخصص :برنامه نویس
@matiar22444 سال پیشمطرح شد
1

سلام من همه کار های که گفتید رو انجام دادم ولی الان اررور createdat میده
میشه لطفا بگید برای این کار باید چی کار کنیم


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

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