laravel - Laravel 数据库:如何“更改” UUID 列类型
问题描述
我有一个 UUID 列类型,它是另一个表的外键,我想让它可以为空。
$table->uuid('event_id')->nullable()->change();
Laravel 文档包括一个可以“更改”的列类型列表,这不包括 uuid,所以这并不奇怪,https: //laravel.com/docs/5.6/migrations#modifying-columns
数据库是 MySQL,创建时 event_id 字段是一个字符,所以我尝试了以下操作:
$table->char('event_id',36)->nullable()->change();
得到与上面相同的结果(同样,没有真正的惊喜)。
我的问题是:我可以使用 Laravel 的 DB Schema 进行此修改,还是需要使用原始 SQL?
解决方案
与枚举列一样,如果您希望更改现有数据库上的 uuid,您可能必须使用原始 SQL。
我通常会在新的迁移中写这样的东西来处理现有的数据库:
if (config('app.env')) === 'production') {
DB::statement('ALTER ...');
}
然后我会回到原来的迁移并将 uuid 更改为 char。这样,您不必担心原始 SQL 无法在您的测试或本地环境中运行(在运行 sqlite 的情况下)。
推荐阅读
- c++ - 是否可以将 CHOLMOD 与设备内存中已有的矩阵一起使用?
- c++ - const 上的结构化绑定
- javascript - How to remove class active from multiple active li (multiselect li)
- python - 是否可以动态分配字段类型 - Django Form?
- react-native - AsyncStorage 在 react-native-web 上工作,在 ios 上失败(字符串化 json 数据)
- python - How to fix Module Not Found Error: No module named 'keras'when the module absolutly has been installed
- swift - 数组没有在 Swift 中更新
- node.js - How can you store the output of a promise into a variable?
- python-3.x - 为多列更改整列中的日期格式
- javascript - 使用 JQuery 访问按钮值