webman-admin默认的主键是int,不支持string【已解决】

lyiply

webman-admin新增自己的表,默认主键是varchar(64),但是select只返回数字

问题确定了,问题出在对表的主键类型设置的时候,是不是写死了int,没有自动同步表结构的主键类型,此处主键类型是String,对String型主键的值进行JSON_ENDCODE时改变原始数据(执行formatNormal之后),原本model类查询出来的结果是正常的,复现可用文件plugin\admin\app\controlle\Crud.php中的方法doFormat方法的$items结果来测试

出错的类型打印

截图

解决方案一:不写死主键类型,动态获取
解决方案二:对应的model生成的时候的,非int类型的,加一行 protected $keyType = 'string';
解决方案三:model类返回的数据是正常的,JSON_ENDCODE时才出现,是不是可以对数据结果不加干涉

其他建议

MODEL类此处初始化也太多默认了写死,此表没有自增
查询的结果是array中套object,统一类型

432 1 0
1个回答

walkor

webman/admin v0.6.12做了兼容,新生成的model会兼容主键为字符串的情况,已经生成的model自己加下keyType即可。
升级方法:webman/admin后台里插件市场升级webman/admin。
注意:升级会覆盖plugin/admin目录,如有修改记得备份。

🔝