ورود

View Full Version : عمل نکردن مقدار پیش فرض برای یک attribute



majidbayat
دوشنبه 11 فروردین 1399, 10:44 صبح
سلام و عرض ادب
برای یک attribute مقدار اولیه تعریف میکنم اما زمانی که از فرم null ارسال میشه بجای اینکه مقدار پیش فرض در جدول قرار بگیره، پیغام خطا نمایش داده میشه

مشخصات جدول


$table->id();
$table->integer('number');
$table->timestamps();
فرم


<form action="/test/insert" method="post">
@csrf
<input type="number" name="number" value="1">
<button type="submit">insert</button>
</form>

تعریف مقدار پیش فرض در مدل Test


protected $fillable = [ 'number' ];
protected $attributes = [ 'number' => 1 ];

از این روش هم استفاده کردم اما فرقی نکرد


$test->number=$request->input('number', 1);

اینم نتیجه ای که بعد از ارسال null دریافت میکنم


Integrity constraint violation: 1048 Column 'number' cannot be null
(SQL: insert into `tests` (`number`, `updated_at`, `created_at`) values (?, 2020-03-30 06:30:51, 2020-03-30 06:30:51))

plague
دوشنبه 11 فروردین 1399, 21:31 عصر
دیتابیس یه چیزی داره به اسم strict mode که وقتی فعال باشه مقادیر دیفالت رو قبول نمیکنه
برو تو config/database.php

'strict' => true

رو false کن


اگه نشد برو از تو phpmyadmin توی دیتابیست و این کوئری رو اجرا کن


set global sql_mode='';

majidbayat
دوشنبه 11 فروردین 1399, 22:58 عصر
امتحان کردم نشد
البته اینم بگم چه قبل و چه بعد از این کارها ، مقادیر دیفالتی که برای چک باکسها تعیین کردم به درستی کار میکنه
حالا چه مشکلی با این نوع ورودی داره نمیدونم
در هر حال ممنون از پاسختون