SQLSTATE[42S22]: Column not found: 1054 Unknown column 'updated_at' in 'field list'
کد خود را اینجا وارد کنید
``` protected $fillable = ['name', 'codmeli', 'paye', 'class'];
خطای fillable میداد وقتی میخاستم فرم رو توی دیتابیس ذخیری کنم بعد کد بالایی رو اضافه کردم بعد اون خطایی که در بالا ذکر کردم رو میده
حتما ستون Updated_at رو پاک کردین
یا یه ستون اضافه کنین یا برای غیرفعال کردنش در مدل این کد را بزارید
CONST UPDATED_AT = null;
من یک مایگریشنی که ساخته بودم رو حذف کردم و دوباره با اون نام یک مایگریشن جدبد ساختم و ستون هام اضافه کردم و مایگریشن رو ران کردم توی دیتابیس مایگریشن با ستون هام ساخته شد و ستون های updated at و create at هم خودکار اضافه شده ولی بازم این خطا رو میده
بعد دستور public $timestamps = false; رو دادم این خطارو داد SQLSTATE[42S02]: Base table or view not found: 1146 Table 'laravel.students' doesn't exist
کد خود را اینجا وارد کنید
```insert into
`students` (`name`, `codmeli`, `paye`, `class`)
values
(dle, asc, sdca, asc)
سلام دوست من 🖐
امیدوارم حالت خوب و عالی باشی✨
خطای "Column not found: 1054 Unknown column 'updated_at' in 'field list'" به عنوان یک خطای پیشفرض در لاراول اتفاق میافته زمانی که مدل شما انتظار داره در جدول دیتابیس فیلد updated_at
وجود داشته باشه ولی این فیلد در جدول دیتابیس شما وجود نداره . این فیلد معمولاً برای زمانی که رکوردها آپدیت میشن ، توسط لاراول به صورت پیشفرض ایجاد میشه .
برای رفع این مشکل میتونی به چندین روش عمل کنی
ایجاد فیلد updated_at
در جدول دیتابیس:
اگر میخوای از این فیلد برای دنبال کردن زمان آخرین آپدیت رکوردها استفاده کنی، میتونی این فیلد را به جدول مربوطه اضافه کنی . برای این کار، میتونی از میگریشن لاراول استفاده کنی و با ایجاد میگریشن جدید، این فیلد را به جدول اضافه کنی. به عنوان مثال:
php artisan make:migration add_updated_at_to_your_table_name
بعد در فایل میگریشن که ایجاد شده ، کد زیر را به متد up
اضافه کن:
public function up()
{
Schema::table('your_table_name', function (Blueprint $table) {
$table->timestamp('updated_at')->nullable();
});
}
و میگریشن را اجرا کن:
php artisan migrate
این کار باعث ایجاد فیلد updated_at
در جدول دیتابیس مربوطه میشه و خطای مورد نظر برطرف میشه و تمام
غیرفعالسازی Timestamps در مدل:
اگر نمیخوای از فیلدهای created_at
و updated_at
در مدلهای خود ت استفاده کنی ، میتونی اونارو را توی مدل غیرفعال کنی. برای این کار، در مدلت ، خصوصیت $timestamps
را به false
تنظیم کن. به عنوان مثال:
public $timestamps = false;
این کار باعث میشه لاراول دیگر انتظار نداشته باشه که فیلدهای created_at
و updated_at
در جدول دیتابیس مربوطه وجود داشته باشه.
با انجام یکی از این دو روش، مشکلت برطرف میشه و از فرمهای ثبت اطلاعات بدون مشکل میتونی استفاده کنی
امیدوارم پاسخم بهت کمک کرده باشه ❤️
موفق و پیروز باشی 🤘🌹
سلام
ببینید این یه موضوع ساده هست اما میتونه گیج کننده هم بشه
شما چند چیز رو باید بدونید و چک کنید
مورد اول این که اگر دیتابیس شما فیلد timestamps رو داره که یعنی شامل created_at و updated_at میشه شما اصلا نیازی به مقدار دهی این دو ندارید و به صورت اتوماتیک مقدار دهی میشن پس توی مدل خودتون در fillable نباید اسمی از این دو بیارید
حالا اگر به هر دلیلی نیاز دارید به صورت دستی این کار رو بکنید و تاریخ دیگری رو خودتون بزارید نیاز هست که در fillable نام این دو باشه تا موقع مقدار دهی خطا نده که همجین فیلدی رو نمیشناسم
و اگر اصلا نمیخوایی که توی دیتا بیست باشه و timestamp نداری توی مدل خودت باید اینو اعلام کنی تا خطا نده
public $timestamps=false;
وقتی نمیخوایی create و update خودکار داشته باشی از timestamp استفاده نکن تا مجبور نشی بری دستی از دیتابیس پاکش کنی و یک created_at بساز فقط و توی fillable هم بیارش و مقدارش رو هم false کن که به صورت دستی خودت مقدار دهی کنیش
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟