我有一个已经分配了默认值的表。例如,我们可以查看以下内容:
Schema::create('users', function (Blueprint $table) {
$table->increments('id')->unsigned();
$table->integer('active')->default(1);
});
现在我想更改活动字段的默认值。我期待着做这样的事情:
if (Schema::hasTable('users')) {
Schema::table('users', function (Blueprint $table) {
if (Schema::hasColumn('users', 'active')) {
$table->integer('active')->default(0);
}
});
}
但它当然告诉我专栏已经在那里了。如何简单地更新x列的默认值而不删除该列?
创建新的迁移文件.并使用Change()
if (Schema::hasTable('users')) {
Schema::table('users', function (Blueprint $table) {
if (Schema::hasColumn('users', 'active')) {
$table->integer('active')->default(0)->change();
}
});
}
并且确保将原则/dbal
依赖项添加到composer.json文件
您必须调用change函数来更新列
if (Schema::hasTable('users')) {
Schema::table('users', function (Blueprint $table) {
if (Schema::hasColumn('users', 'active')) {
$table->integer('active')->default(0)->change();
}
});
}
可以使用Change()
方法:
Schema::table('users', function ($table) {
$table->integer('active')->default(0)->change();
});
然后运行迁移
命令。
使现代化
对于Laravel 4,请使用以下内容:
DB::statement('ALTER TABLE `users` CHANGE COLUMN `active` `active` INTEGER NOT NULL DEFAULT 0;');
在up()
方法内部,而不是Schema::table()
子句。
我不明白迁移中的选项会产生什么影响。 我可以看到数据库中的列是用默认值定义的,但是模型完全忽略了它。假设我有一个反映数据库中表的模型。我必须迁移才能创建books表: 当我创建一个新的模型实例时,我看到: 默认值被忽略,属性设置不正确。好的,我可以得到它,因为它是一个新对象,它不应该从数据库中获取默认值。但是如果我试图保存模型,比如: 在数据库的字段中保存0! 那么,迁移中的选项有什么意义呢? 顺
我用未签名的创建了一个迁移。如何在新迁移中编辑,使其也可以?
我正在上进行开发,并在本地环境和生产环境中进行以下迁移。 我想用以下经过调整的字段来更改迁移: 由于我正在生产中使用当前的迁移,我不希望丢失数据。 我只是尝试用我的新表定义修改迁移文件,但我得到了: 有什么建议如何在Laravel适当地改变迁移? 谢谢你的回复!
问题内容: 尝试更改列的数据类型并设置新的默认值时遇到以下错误: 错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以在第1行的’VARCHAR(255)NOT NULL SET DEFAULT’{}’‘附近使用正确的语法 问题答案: 同样的第二种可能性(感谢juergen_d):
在尝试更改列的数据类型并设置新的默认值时,我遇到以下错误: 错误1064(42000):您的SQL语法中有错误;查看与您的MySQL server版本相对应的手册,以了解第1行“varchar(255)NOT NULL SET DEFAULT”{}“附近使用的正确语法
本文向大家介绍Laravel 更改默认应用目录,包括了Laravel 更改默认应用目录的使用技巧和注意事项,需要的朋友参考一下 示例 在某些情况下,您可能希望将应用程序目录重命名为其他名称。在Laravel4中,您可以更改配置条目,这是在Laravel5中完成配置的一种方法。 在此示例中,我们将app目录重命名为src。 覆盖应用程序类 目录名app被硬编码到核心Application类中,因此必