如何使用蒸气(流畅迁移)将字段从必需更新为可选?

问题描述 投票:0回答:1

我用的是蒸汽 4

struct MakeRegionOptional: AsyncMigration {
    
    func prepare(on database: Database) async throws {
        try await database.schema("Attraction")
            .updateField("region", .string)
            .update()
    }
    
    func revert(on database: Database) async throws {
        try await database.schema("Attraction")
            .field("region", .sql(.default("")))
            .update()
    }
    
}

还在配置文件更新表模型中添加迁移。

app.migrations.add(MakeRegionOptional())

// 桌子的吸引力模型

final class Attraction: Model, Content {
    static let schema = "Attraction"
    
    @ID(key: .id)
    var id: UUID?
    
    
    //Before
    //@Field(key: "region")
    //var region: String
    
    // after make optional
    @OptionalField(key: "region")
    var region: String?
    
    init() { }
    
    init(id: UUID? = nil, region: String?) {
        self.id = id
        self.region = region
    }
     }

我正在尝试使用迁移来制作可选的区域字段。但是我的代码不起作用,也许我的迁移是错误的。任何人都知道如何进行此迁移?

swift database-migration vapor vapor-fluent server-side-swift
1个回答
0
投票

update()
使您能够将列从可选更改为
.required
但不是其他方式。
.notRequired
之类的东西在这里会有用,但它不存在!

最简单的方法是使用原始 sql 查询来更改列。

© www.soinside.com 2019 - 2024. All rights reserved.