V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
inspiration2030
V2EX  ›  问与答

Gorm 相关,需要动态创建数据表,是不是不太适合使用 ORM 啊?

  •  1
     
  •   inspiration2030 · 145 天前 · 756 次点击
    这是一个创建于 145 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在做一个项目,需要在前端创建数据表。

    之前没有这个需求所以用着 Gorm 还挺舒服的,但是加了这个需求后在网上找了好久没找到解决办法。虽然 Gorm 可以执行原生 SQL 语句但是只能用结构体接收结果。

    想问一下存不存在解决方案?

    目前的思路是反射构造结构体,但是不知道可不可行,而且有点麻烦。

    13 条回复    2022-02-08 16:49:54 +08:00
    wangsyi13
        1
    wangsyi13  
       145 天前
    还得看具体需求吧,直接 interface{}接,转成 json ,然后根据 json 键取值?
    ilylx2008
        2
    ilylx2008  
       145 天前
    db.AutoMigrate(&User{})
    就能自动创建表
    inspiration2030
        3
    inspiration2030  
    OP
       145 天前 via Android
    @ilylx2008 但是表是动态的,没办法提前设定结构体。
    inspiration2030
        4
    inspiration2030  
    OP
       145 天前 via Android
    @wangsyi13 有道理,但是已经和 orm 没什么关系了😂
    Cheivin
        5
    Cheivin  
       145 天前
    要不 map 一把梭?
    darksword21
        6
    darksword21  
       145 天前 via iPhone
    直接让前段操作数据库!(逃
    inspiration2030
        7
    inspiration2030  
    OP
       145 天前 via Android
    @Cheivin Gorm 好像不能单用 map 操作,看文档都得先 Model(&Struct{})。
    ilylx2008
        8
    ilylx2008  
       145 天前
    @inspiration2030 那就把表改成静态
    wangsyi13
        9
    wangsyi13  
       145 天前
    @inspiration2030 这需求我感觉是跟 orm 没啥关系
    Cheivin
        10
    Cheivin  
       145 天前
    @inspiration2030 建表可能你得用反射,其他数据操作可以通过 Table(string)指定表名,然后 map 接收结果
    Trim21
        11
    Trim21  
       145 天前 via Android
    我记得可以用 map 的,文档只是没给例子
    inspiration2030
        12
    inspiration2030  
    OP
       145 天前 via Android
    @Cheivin 感谢
    inspiration2030
        13
    inspiration2030  
    OP
       145 天前 via Android
    @Trim21 已经看到了,感谢。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1161 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 23:14 · PVG 07:14 · LAX 16:14 · JFK 19:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.