ORM模型中,字段使用了指针也不会返回nil,官方说法是为了安全,但我认为这不严谨。特别是对于接口洁癖的人来说会看到很多空字符串。而且如果不走ORM,在Response上nil字段也会变成null存在。
自带的gf cli工具生成模型并不好用,不能自动生成关联(目前)。如果手动维护关联,后续再次使用gf gen dao的时候模型会被覆盖,除非将模型放置在其它位置。
dto和entity,dto中的字段都是interface{} 便于写入时使用,entity中的字段是相应的类型,而且带json tag便于输出。在多数场景下还是需要单独构建业务所需的模型。
GoFrame的ORM对于many to many的关联不友好
无法通过tag设置关系表,需要套2层模型才可以实现,这样会打乱模型结构 主表模型[i].关联表模型[j].附表.成员
通过join方法再scan会出现主键重复,而且对于两表重复的字段(id)不做自动处理,加As语句无用,需要手动调用Fields(“user.id as uid”),而且需要模型配合字段绑定才可以进行scan。
使用With方法多层关联时会产生大量无效查询 #1552
2022-02-03 04:13:40.579 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 1 ms] [default] [rows:20 ] SELECT `id`,`name`,`ourOrgName`,`ourDirector`,`partnerOrgName`,`partnerDirector`,`ourContractNo`,`partnerContractNo`,`contractAmount`,`siginedTime`,`effectiveTime`,`expiryTime`,`comment`,`status`,`creatorId` FROM `contract` WHERE `deleted_at` IS NULL LIMIT 0,20
2022-02-03 04:13:40.596 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 15 ms] [default] [rows:6 ] SELECT `contractId`,`uploadId` FROM `contract_upload` WHERE `contractId` IN(11,12,13,14,15,16,17,18,19,29,31,32,33,34,38,39,40,41,42,43)
2022-02-03 04:13:40.597 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 0 ms] [default] [rows:4 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (`id` IN(4,5,6,25)) AND `delete_at` IS NULL
2022-02-03 04:13:40.598 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 0 ms] [default] [rows:0 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (0=1) AND `delete_at` IS NULL
2022-02-03 04:13:40.599 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 1 ms] [default] [rows:0 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (0=1) AND `delete_at` IS NULL
2022-02-03 04:13:40.599 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 0 ms] [default] [rows:0 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (0=1) AND `delete_at` IS NULL
2022-02-03 04:13:40.600 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 0 ms] [default] [rows:0 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (0=1) AND `delete_at` IS NULL
2022-02-03 04:13:40.600 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 0 ms] [default] [rows:0 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (0=1) AND `delete_at` IS NULL
2022-02-03 04:13:40.601 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 0 ms] [default] [rows:0 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (0=1) AND `delete_at` IS NULL
2022-02-03 04:13:40.601 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 0 ms] [default] [rows:0 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (0=1) AND `delete_at` IS NULL
2022-02-03 04:13:40.602 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 0 ms] [default] [rows:0 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (0=1) AND `delete_at` IS NULL
对于这个ORM ,写这种烂代码让我想回到拿着iris+gorm+gojwt+redigo去造轮子了。
上传文件不知道如何写Request,想让Request通过依赖注入包含file字段
静态文件服务不带中间件,无法实现授权访问