我正在编写迁移,以便立即在表nullable
中创建某些列。对于向下功能,我当然希望再次创建这些列not nullable
。我浏览了schema builder docs,但看不到这样做的方法。
任何帮助都将不胜感激。
答案 0 :(得分:172)
在Laravel 5之前,没有使用模式构建器更改现有表列的Laravel本机方法。您需要使用原始查询。
但是,从Laravel 5开始,您可以使用:
$table->...->nullable(false)->change();
答案 1 :(得分:34)
从Laravel 5开始,它可以原生地反转 - 只需将false作为参数传递给nullable()。
e.g。
sum(val for val in l1 if isinstance(val, numbers.Number))
答案 2 :(得分:3)
您可以再次声明该列而无需-> nullable()并使用-> change
public function up()
{
Schema::table('table_name', function (Blueprint $table) {
$table->type('column')->change();
});
}
public function down()
{
Schema::table('table_name', function ($table) {
$table->type('column')->nullable()->change();
});
}
答案 3 :(得分:0)
首先运行:
composer require doctrine/dbal
然后创建一个将更改表的迁移,如下所示:
php artisan make:migration fix_whatever_table_name_here
public function up()
{
Schema::table('table_name', function (Blueprint $table) {
$table->type('column')->nullable(false)->change();
});
}
public function down()
{
Schema::table('table_name', function ($table) {
$table->dropColumn('column');
});
}
答案 4 :(得分:-8)
以下信息适用于 SQL
首先使用以下代码
UPDATE [Table] SET [Column]=0 WHERE [Column] IS NULL
而不是运行此代码
ALTER TABLE [Table] MODIFY [Column] INTEGER NOT NULL