现象
导出单条,导出本页都全成功,导出全部失败,php响应500。随即排查。
后端日志
local.ERROR: Array to string conversion
日志表明该行处理数据应该是字符串的却传了个数组,说明页面数据自定义的地方有返回一个数组。继续排查代码,果不其然,有个自定义数据业务方法小伙伴写成了返回字符串和数组两种情况。
解决方案
grid数据格式不能用数组,虽然array数据在grid界面能正常显示,但是导出会异常,触发底层兼容问题。
返回数组时laravel-admin grid渲染成了数组打印值。如下图。
延伸
虽然php是弱类型语言,但是我们在实际编码过程中局部业务逻辑返回数据类型一定要统一。