2016-11-09 67 views
1

我有這個條件的驅動程序模式:1366不正確的十進制值Laravel

protected $fillable = [ 
'hourly_rate', 
'ot_hourly_rate', 
'commission_rate', 
'basic_salary', 
'join_date', 
]; 

,這裏是我的移民代碼:

public function up() 
{ 
Schema::table('drivers', function ($table) { 
    $table->integer('hourly_rate', 24,2)->nullable()->default(0); 
    $table->decimal('ot_hourly_rate', 24,2)->nullable()->default(0); 
    $table->decimal('commission_rate', 24,2)->nullable()->default(0); 
    $table->decimal('basic_salary', 24,2)->nullable()->default(0); 
}); 
} 

/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
Schema::table('drivers', function ($table) { 
    $table->dropColumn('hourly_rate'); 
    $table->dropColumn('ot_hourly_rate'); 
    $table->dropColumn('commission_rate'); 
    $table->dropColumn('basic_salary'); 
}); 
} 

的問題是,當我嘗試創建驅動程序並沒有填寫那些表示錯誤十進制值的字段。十進制不能將空字符串作爲NULL存儲在數據庫中?

注意:這些字段不是必需的。

+0

爲什麼你有空和默認?當新行被添加時,你希望它默認爲0還是null?嘗試添加'default('0')'看看會發生什麼。 – usrNotFound

回答

0

不需要設置爲空,因爲你設置的默認值。嘗試這個

$table->decimal('basic_salary', 24,2)->default(0); 
0

試試這個:Available Column Types

public function up() 
{ 
    Schema::table('drivers', function ($table) { 
     $table->integer('hourly_rate')->default(0); 
     $table->decimal('ot_hourly_rate', 24,2)->default(0); 
     $table->decimal('commission_rate', 24,2)->default(0); 
     $table->decimal('basic_salary', 24,2)->default(0); 
    }); 
} 

public function down() 
{ 
    Schema::drop('drivers'); 
} 

聲明:decimal(p[,s]).

P =精密 - 總的數字位數存儲在小數點左側和右側。

s =縮放存儲在小數點右側的最大位數(可選)。

最小精度是1,最大精度是38.默認精度爲18

注:十進制等價於數值。

more details

+0

我有同樣的問題,並將其設置爲默認值0不起作用:( – lewis4u

+0

相同的問題,和@ lewis4u說,這似乎並沒有解決它。 –

0

我遇到了同樣的問題最近,且併發症發生與我的輸入字段。

提交這個 <input name="ex" type="number" step="0.01" placeholder="0.00"> 會使輸入字段等於「」。無論您的遷移中的默認設置如何,您仍然會遇到錯誤,因爲默認的 「」不是正確的小數。

我選擇了簡單地改變我的輸入字段更喜歡這個, <input name="ex" type="number" step="0.01" value="0" required>這種方式默認爲0,而不是「」,如果默認值被刪除,而不是取代必填字段防止提交。