首页 > 编程语言 >thinkphp5遇到必须使用Db::raw方法而无法使用json格式传递Db对象

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

时间:2024-05-22 14:58:42浏览次数:24  
标签:Db thinkphp5 传递 raw json 使用 where

今天使用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格式可读性高、占用字符少;但还是有可取之处。

 

标签:Db,thinkphp5,传递,raw,json,使用,where
From: https://www.cnblogs.com/cnxzb/p/18206238

相关文章

  • LLM-文心一言:modbus、opc、can、mqtt协议
    Modbus、OPC、CAN和MQTT都是不同的通信协议,它们在工业自动化、物联网和其他领域有着广泛的应用。以下是对这些协议的简要介绍:Modbus:Modbus是一种串行通信协议,由Modicon公司(现为施耐德电气的一部分)在1979年提出,用于可编程逻辑控制器(PLC)之间的通信。它已经成为工业领域通信协议的......
  • DBever SQL编辑器的高级应用:如何用变量快速查询
    哈喽,大家好,我是木头左!一、DBeverSQL编辑器简介DBever是一款数据库管理工具,它支持多种数据库,如MySQL、SQLServer、Oracle等。其中,它的SQL编辑器功能非常强大,可以让更方便地进行SQL语句的编写和执行。今天,就来探讨一下DBeverSQL编辑器中如何使用变量的方式。二、如何在DBeve......
  • Modbus转PROFINET网关TS-180为钢铁厂生产保驾护航
    背景:在钢铁厂的生产过程中,电机作为驱动各种生产机械和辅助设备的关键设备,其正常运行对于生产效率和质量至关重要。为了确保电机的正常运行和使用寿命,通常会使用软启动器和马达保护器等设备,因此监控软启和马达保护器的工作参数成为重点。福建某钢铁厂,中控室使用S7-1515PLC,实时监......
  • 上海泗博HART转ModbusTCP网关HME-635应用案例之组态王和超声波液位计通信
    如今工业现场的应用也逐渐把现场的不同应用协议转换成以太网,以此来提升现场的通信速度和质量。ModbusTCP是工业以太网协议的一种,也是现场应用中最常使用的。本应用案例是基于ModbusTCP的组态王和基于HART的超声波液位计之间数据通讯的具体应用。应用图如下:  上海泗博HART......
  • 在Docker中安装GaussDB的ODBC驱动并添加Python测试代码
    #使用官方的Ubuntu20.04镜像作为基础镜像FROMubuntu:20.04#设置环境变量以避免交互式安装提示ENVDEBIAN_FRONTEND=noninteractive#更新包列表并安装必要的软件包RUNapt-getupdate&&\apt-getinstall-y\wget\curl\gnupg2\apt-transport-https......
  • 在Docker中安装SQL Server的ODBC驱动并添加Python测试代码
    #使用官方的Ubuntu20.04镜像作为基础镜像FROMubuntu:20.04#设置环境变量以避免交互式安装提示ENVDEBIAN_FRONTEND=noninteractive#更新包列表并安装必要的软件包RUNapt-getupdate&&\  apt-getinstall-y\  wget\  curl\  gnupg2\ ......
  • 在Docker中安装MySQL的ODBC驱动并添加Python测试代码
    #使用官方的Ubuntu镜像作为基础镜像FROMubuntu:20.04#设置环境变量以避免交互式安装提示ENVDEBIAN_FRONTEND=noninteractive#更新包列表并安装必要的软件包RUNapt-getupdate&&\  apt-getinstall-y\  build-essential\  curl\  apt-trans......
  • 在Docker中安装PostgreSQL的ODBC驱动并添加Python测试代码
    #使用官方的Ubuntu镜像作为基础镜像FROMubuntu:20.04#设置环境变量以避免交互式安装提示ENVDEBIAN_FRONTEND=noninteractive#更新包列表并安装必要的软件包RUNapt-getupdate&&\  apt-getinstall-y\  build-essential\  unixodbc\  unixo......
  • AsterixDB初识
    基本概念后台启动AsterixDBcd~/asterixdb/asterixdb/asterix-server/target/asterix-server-0.9.10-SNAPSHOT-binary-assembly/apache-asterixdb-0.9.10-SNAPSHOT/opt/local/bin./start-sample-cluster.sh修改AsterixDB代码后,调试AsterixDB;启动/asterixdb/asterixdb/asterix......
  • Springboot Data Jdbc实体类json格式存储
    日常需求中有些需求需要在某字段存储json格式数据,例如日志审计接口传参数据等1.首先我们得保证数据库字段为text或者json2.设置读转换和写转换器importcom.fasterxml.jackson.databind.ObjectMapper;importorg.springframework.core.convert.converter.Converter;importo......