عارف آرمات
1 سال پیش توسط عارف آرمات مطرح شد
6 پاسخ

میشه در رفع این خطا منو راهنماییم کنید

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'updated_at' in 'field list'


کد خود را اینجا وارد کنید
```    protected $fillable  = ['name', 'codmeli', 'paye', 'class'];
خطای fillable  میداد وقتی میخاستم فرم رو توی دیتابیس ذخیری کنم بعد کد بالایی رو اضافه کردم بعد اون خطایی که در بالا ذکر کردم رو میده

ثبت پرسش جدید
Alishco
@alishco 1 سال پیش مطرح شد
0

حتما ستون Updated_at رو پاک کردین
یا یه ستون اضافه کنین یا برای غیرفعال کردنش در مدل این کد را بزارید

CONST UPDATED_AT = null;

عارف آرمات
@aref5555 1 سال پیش مطرح شد
0

من با مایگریشن ستون ساختم توی دیتابیس بعد داخل دیتابیس ستون updated at رو دستی پاک کردم


عارف آرمات
@aref5555 1 سال پیش مطرح شد
0

من یک مایگریشنی که ساخته بودم رو حذف کردم و دوباره با اون نام یک مایگریشن جدبد ساختم و ستون هام اضافه کردم و مایگریشن رو ران کردم توی دیتابیس مایگریشن با ستون هام ساخته شد و ستون های updated at و create at هم خودکار اضافه شده ولی بازم این خطا رو میده


عارف آرمات
@aref5555 1 سال پیش مطرح شد
0

بعد دستور 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)

مهدی نظری
تخصص : توسعه دهنده Front End
@mahdi.nazari 1 سال پیش مطرح شد
1

سلام دوست من 🖐
امیدوارم حالت خوب و عالی باشی✨

خطای "Column not found: 1054 Unknown column 'updated_at' in 'field list'" به عنوان یک خطای پیشفرض در لاراول اتفاق می‌افته زمانی که مدل شما انتظار داره در جدول دیتابیس فیلد updated_at وجود داشته باشه ولی این فیلد در جدول دیتابیس شما وجود نداره . این فیلد معمولاً برای زمانی که رکوردها آپدیت میشن ، توسط لاراول به صورت پیش‌فرض ایجاد می‌شه .

برای رفع این مشکل میتونی به چندین روش عمل کنی

  1. ایجاد فیلد 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 در جدول دیتابیس مربوطه می‌شه و خطای مورد نظر برطرف می‌شه و تمام

  2. غیرفعال‌سازی Timestamps در مدل:
    اگر نمی‌خوای از فیلدهای created_at و updated_at در مدل‌های خود ت استفاده کنی ، میتونی اونارو را توی مدل غیرفعال کنی. برای این کار، در مدلت ، خصوصیت $timestamps را به false تنظیم کن. به عنوان مثال:

    public $timestamps = false;

    این کار باعث می‌شه لاراول دیگر انتظار نداشته باشه که فیلدهای created_at و updated_at در جدول دیتابیس مربوطه وجود داشته باشه.

با انجام یکی از این دو روش، مشکلت برطرف میشه و از فرم‌های ثبت اطلاعات بدون مشکل می‌تونی استفاده کنی

امیدوارم پاسخم بهت کمک کرده باشه ❤️
موفق و پیروز باشی 🤘🌹


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 1 سال پیش مطرح شد
0

سلام
ببینید این یه موضوع ساده هست اما میتونه گیج کننده هم بشه
شما چند چیز رو باید بدونید و چک کنید
مورد اول این که اگر دیتابیس شما فیلد timestamps رو داره که یعنی شامل created_at و updated_at میشه شما اصلا نیازی به مقدار دهی این دو ندارید و به صورت اتوماتیک مقدار دهی میشن پس توی مدل خودتون در fillable نباید اسمی از این دو بیارید

حالا اگر به هر دلیلی نیاز دارید به صورت دستی این کار رو بکنید و تاریخ دیگری رو خودتون بزارید نیاز هست که در fillable نام این دو باشه تا موقع مقدار دهی خطا نده که همجین فیلدی رو نمیشناسم
و اگر اصلا نمیخوایی که توی دیتا بیست باشه و timestamp نداری توی مدل خودت باید اینو اعلام کنی تا خطا نده

public $timestamps=false;

وقتی نمیخوایی create و update خودکار داشته باشی از timestamp استفاده نکن تا مجبور نشی بری دستی از دیتابیس پاکش کنی و یک created_at بساز فقط و توی fillable هم بیارش و مقدارش رو هم false کن که به صورت دستی خودت مقدار دهی کنیش


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

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