thinkphp5遇到必须使用Db::raw方法而无法使用json格式传递Db对象 ...

打印 上一主题 下一主题

主题 907|帖子 907|积分 2721

今天使用Thinkphp5做异步任务传递where参数时遇到一个问题:
有一段如下代码:
  1. $where['jst.supplier'] = ['exp', Db::raw('>0 or jst.is_supplier=1')];
复制代码
在使用swoole做异步任务时需要把where参数传递给异步任务处理,因为无法传递数组和对象只能传递字符串,所以需要把where数组转换成字符串;
从前不停是使用json_encode函数转换json字符串,结果在今天使用发现报错:

 进一步追查发现,swoole_client传递的参数就有问题
原始参数是这样的:

 结果使用json_encode生成之后是这样的:

 网上找了很多办法都不太好,
末了尝试使用  serialize 函数对数组进行序列化,然后swoole服务端使用 unserialize 转换回数组,结果发现Db对象完全保留未发生丢失。
serialize方法虽然不json格式可读性高、占用字符少;但还是有可取之处。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表