如何解决如何在 Laravel 迁移中将字符串转换为布尔值?
我想将字段从字符串转换为布尔值 试试这个代码:
public function up()
{
Schema::table('users',function (Blueprint $table) {
$table->boolean('email_permission')->change();
$table->boolean('sms_permission')->change();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users',function (Blueprint $table) {
//
});
}
但我收到以下错误
Doctrine\DBAL\Driver\PDOException::("SQLSTATE[42804]: Datatype mismatch: 7 ERROR: column
"email_permission" cannot be cast automatically to type boolean
HINT: You might need to specify "USING email_permission::boolean".")
这是原始迁移:
public function up()
{
Schema::table('users',function (Blueprint $table) {
$table->string('email_permission')->nullable()->default('0');
$table->string('sms_permission')->nullable()->default('0');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users',function (Blueprint $table) {
$table->dropColumn('email_permission');
$table->dropColumn('sms_permission');
});
}
如何将此字段类型从整数更改为布尔值?
解决方法
我使用这种方式,效果很好
public function up()
{
Schema::table('users',function (Blueprint $table) {
DB::statement("ALTER TABLE users
ALTER COLUMN email_permission DROP DEFAULT,ALTER COLUMN email_permission TYPE BOOLEAN USING email_permission::BOOLEAN,ALTER COLUMN email_permission SET DEFAULT FALSE;");
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。