赐度虻 发表于 2025-6-4 13:21:36

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

今天使用Thinkphp5做异步任务传递where参数时遇到一个问题:
有一段如下代码:
$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格式可读性高、占用字符少;但还是有可取之处。
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

南宫玉英 发表于 2025-11-1 06:35:23

懂技术并乐意极积无私分享的人越来越少。珍惜

司寇涵涵 发表于 2025-11-1 08:17:28

前排留名,哈哈哈

洪思思 发表于 2025-11-23 15:39:07

热心回复!

致掣 发表于 2025-12-11 05:42:08

谢谢楼主提供!

诘琅 发表于 2025-12-11 18:33:55

新版吗?好像是停更了吧。

拼匍弦 发表于 2025-12-15 04:00:20

感谢分享

替攀浮 发表于 2026-1-19 06:41:13

前排留名,哈哈哈

撇瞥 发表于 2026-1-19 12:21:37

前排留名,哈哈哈

湄圳啸 发表于 2026-1-20 16:28:07

过来提前占个楼

沃盼盼 发表于 2026-1-21 16:52:15

这个有用。

僚娥 发表于 2026-1-23 08:47:26

谢谢楼主提供!

砂歹汤 发表于 2026-1-23 09:47:39

yyds。多谢分享

威割 发表于 2026-1-26 06:29:31

这个有用。

黎娅茜 发表于 2026-1-27 05:24:18

喜欢鼓捣这些软件,现在用得少,谢谢分享!

祝娜娜 发表于 2026-1-29 07:32:27

这个有用。

珠尿娜 发表于 2026-2-3 07:30:03

用心讨论,共获提升!

仲秀娟 发表于 2026-2-6 07:23:16

感谢分享,学习下。

左优扬 发表于 2026-2-6 13:17:21

yyds。多谢分享

僭墙覆 发表于 2026-2-9 16:28:10

谢谢分享,试用一下
页: [1] 2
查看完整版本: thinkphp5遇到必须使用Db::raw方法而无法使用json格式传递Db对象