Laravel5.5:将字符串迁移到JSON

Laravel5.5:将字符串迁移到JSON,json,laravel,migration,Json,Laravel,Migration,如何在Laravel5.5中进行迁移,将字符串的数据类型更改为JSON?我的专栏有图像链接,我想将其更改为JSON以存储更多链接 我觉得这是最好的办法 更改列的字符串值,使其对应于JSON数据类型 将列的数据类型更改为JSON 我可以通过以下方式完成mysql的第一步: UPDATE db.vendor_horses SET image= CONCAT('{"images":["', image, '"]}'); 谢谢 您可以使用php artisan make:migration mig

如何在Laravel5.5中进行迁移,将字符串的数据类型更改为JSON?我的专栏有图像链接,我想将其更改为JSON以存储更多链接

我觉得这是最好的办法

  • 更改列的字符串值,使其对应于JSON数据类型
  • 将列的数据类型更改为JSON
我可以通过以下方式完成mysql的第一步:

UPDATE db.vendor_horses SET image= CONCAT('{"images":["', image, '"]}');

谢谢

您可以使用
php artisan make:migration migration\u name
命令轻松创建新的迁移

使用以下命令更改数据类型

Schema::table('vendor_horses', function (Blueprint $table) {
    $table->json('image')->change();
});

change()方法允许您设置可为null、修改数据长度和类型。阅读更多关于mySql版本8到更高版本的信息

Schema::table('table_name', function (Blueprint $table) { 
$table->json('field_name')->change(); 
});

首先,如果使用laravel并更改数据库表字段,则安装
composer require-doctor/dbal
阅读laravel中的更多信息

只需从
php artisan make:migration migration\u name
创建一个新的迁移文件,然后打开新创建的迁移文件

Schema::table('your_table_name',function(Blueprint $table){

 $table->json('image')->change();

 //make nullable to image field 
 $table->json('image')->nullable()->change();

 //rename image field to other 
  $table->renameColumn('old_column_name', 'new_column_name');

})

change()方法允许您设置数据长度、更改列名并使其可为null

change命令是否更改该值?因为现在列的值只是“img/image01.jpg”。不是有效的json字符串还记得在生产环境中运行任何东西之前进行数据备份。不,change命令不会更改该值。我以为您已经使用sql命令完成了这项工作。另外,您也不希望在迁移过程中更改值。Let us.SQLSTATE[42000]:语法错误或访问冲突:1253排序规则“utf8mb4_这是db列值的示例:{“images”:[“/vendors/57/horse-11.png”]}请检查您的mysql版本gretter或等同于5.7,然后使用JSON数据类型