2016-11-09 2 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'); 
}); 
} 

私は、ドライバを作成しようと記入していなかったときに問題がありますそれらのフィールドにはエラーの小数点以下の値が表示されます。 10進数で空の文字列をデータベースにNULLとして格納することはできませんか?

注:これらのフィールドは必須ではありません。

+0

nullableとdefaultを持つ理由は何ですか?新しい行が追加されたときに、デフォルト値を0またはnullにしますか? 'default( '0')'を追加して何が起こるかを見てください。 – usrNotFound

答えて

0

デフォルト値を設定しているため、この

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

は試してみてください.Try NULL可能に設定する必要はありません、この: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であり、最大の精度はデフォルト精度が18

注で38である:10進数値と同等です。

more details

+0

私は同じ問題を抱えていて、デフォルト値0に設定しても動作しません。( – lewis4u

+0

同じ問題があり、@ lewis4uと同様にこれは修正されていないようです。 –

0

私は最近、これと同じ問題に遭遇した、と複雑さは、私の入力フィールドとしました。

この投稿を <input name="ex" type="number" step="0.01" placeholder="0.00"> にすると、入力フィールドは ""と等しくなります。マイグレーションのデフォルト値にかかわらず、デフォルトの ""が適切な10進数ではないため、エラーが発生します。

<input name="ex" type="number" step="0.01" value="0" required>このように入力フィールドを変更すると、デフォルトでは ""ではなく0が設定され、デフォルト値が削除されて置き換えられない場合は必須フィールドで送信できなくなります。

関連する問題