2017-02-14 11 views
2

Я попытался выполнить 3 кода в проекте Laravel 5.3, чтобы добавить новый десятичный столбец в существующую таблицу. Но каждый раз он дает такую ​​же ошибку.Как добавить десятичный столбец в существующую таблицу в Laravel 5.3 migration

Schema::table('mileages', function (Blueprint $table) { 
    $table->addColumn('decimal', 'cost'); 
}); 

и

Schema::table('mileages', function (Blueprint $table) { 
    $table->addColumn('decimal', 'cost', ['default'=>0]); 
}); 

и

Schema::table('mileages', function (Blueprint $table) { 
    $table->addColumn('decimal', 'cost', ['default'=>'0,0']); 
}); 

Ошибка:

[Illuminate\Database\QueryException]                     
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that 
corresponds to your MariaDB server version for the right syntax to use near ') not null' at line 1 (SQL: alter table `mileages` add `cost` decimal (,) not null) 

я упускаю что-то?

ответ

2

Вы пытаетесь использовать ->addColumn(), который не совсем корректный синтаксис.

Создать новую миграцию, php artisan make:migrate add_cost_column_to_mileages.

Затем внутри миграции, вы хотите, чтобы выглядеть до:

Schema::table('mileages', function (Blueprint $table) { 
    $table->decimal('cost', 5,2); //Substitute 5,2 for your desired precision 
}); 

И это для пуха:

Schema::table('mileages', function (Blueprint $table) { 
    $table->dropColumn('cost'); 
}); 

Это из документации here, хотя они этого не делают сделать это явным образом.

+0

Да, это работает. Спасибо!. Также '$ table-> addColumn ('decimal', 'cost', ['default' => 0, 'total' => 8, 'places' => 2]);' работает. – Eranda