当前位置: 首页 > news >正文

thinkphp lists todo

来由:

数据库的这个字段我想返回成:

新奇的写法如下:

逻辑层的代码:

  public function goodsDetail($goodId){$detail = $this->good->where('id', $goodId)->hidden(['type_params','user_id'])->find();if (!$detail) {return $this->fail("获取数据失败!");}if ($detail->type === 1) {//特殊的写法$detail->award_lists = '';} else if ($detail->type === 2) {$number_group_buyer = Order::where('good_id', $goodId)->where('status',1)->count('id');$detail->number_group_buyers = $number_group_buyer;}return $this->success("获取数据成功", $detail);}

模型层的代码:

<?phpnamespace app\daogou\model;use app\common\model\TimeModel;class Goods extends TimeModel
{protected $table = 'dg_goods';protected $type = ['type_params'=>'json',];//type_params://      type = 1 : [['coin_id'=>1,'award'=>"0.80000000"],……]//      type = 2 : ['max_number'=>10,'winner'=>1]//      type = 3 : nullpublic function user(){return $this->hasOne('user','user_id','id')->bind(['username']);}public function getStatusTxtAttr($v,$data){//状态(-1:下架,1:上架,2:交易中)$status = [-1=>"下架",1=>"上架",2=>"交易中"];if(array_key_exists('status',$data)){return array_key_exists($data['status'],$status) ? $status[$data['status']] : $data['status'];}return '';}public function getPriceAttr($v){return delZero($v);}public function getTypeTxtAttr($v,$data){//(1:奖购2:团购,3:闪购)$status = [1=>"奖购",2=>"团购",3=>"闪购"];if(array_key_exists('type',$data)){return array_key_exists($data['type'],$status) ? $status[$data['type']] : $data['type'];}return '';}// 不理解的代码public function getAwardListsAttr($v, $good){$awardLists = [];if ($good['type'] === 1) {$type_params = json_decode($good['type_params'],true);foreach ($type_params as $propertyId => $properNumber) {$propertyName = Coin::where('id', $propertyId)->value('name');$award['asset_name'] = $propertyName;$award['asset_number'] = $properNumber;array_push($awardLists,$award);}}return $awardLists;}}

可以通过  :

$ba = debug_backtrace();
var_dump($ba);
die();

来查看执行的流程,,流程如下(个人感觉看起来 【展示的效果】 不是很友好 很乱的感觉 ):

array(8) {[0]=>array(7) {["file"]=>string(66) "D:\wwwroot\yyex\thinkphp\library\think\model\concern\Attribute.php"["line"]=>int(500)["function"]=>string(17) "getAwardListsAttr"["class"]=>string(22) "app\daogou\model\Goods"["object"]=>object(app\daogou\model\Goods)#58 (2) {["data"]=>array(14) {["id"]=>int(14)["user_id"]=>int(2)["type"]=>int(1)["name"]=>string(14) "仙侠小说ss"["photo"]=>string(20) "http://ff12.ffsky.cn"["price"]=>string(6) "102.30"["introduction"]=>string(5) "ccsss"["phone"]=>string(11) "13246885231"["type_params"]=>string(9) "{"20":22}"["status"]=>int(1)["create_time"]=>int(1701844614)["update_time"]=>int(1701844614)["remark"]=>NULL["award_lists"]=>string(0) ""}["relation"]=>array(0) {}}["type"]=>string(2) "->"["args"]=>array(2) {[0]=>string(0) ""[1]=>array(14) {["id"]=>int(14)["user_id"]=>int(2)["type"]=>int(1)["name"]=>string(14) "仙侠小说ss"["photo"]=>string(20) "http://ff12.ffsky.cn"["price"]=>string(6) "102.30"["introduction"]=>string(5) "ccsss"["phone"]=>string(11) "13246885231"["type_params"]=>string(9) "{"20":22}"["status"]=>int(1)["create_time"]=>int(1701844614)["update_time"]=>int(1701844614)["remark"]=>NULL["award_lists"]=>string(0) ""}}}[1]=>array(7) {["file"]=>string(67) "D:\wwwroot\yyex\thinkphp\library\think\model\concern\Conversion.php"["line"]=>int(179)["function"]=>string(7) "getAttr"["class"]=>string(11) "think\Model"["object"]=>object(app\daogou\model\Goods)#58 (2) {["data"]=>array(14) {["id"]=>int(14)["user_id"]=>int(2)["type"]=>int(1)["name"]=>string(14) "仙侠小说ss"["photo"]=>string(20) "http://ff12.ffsky.cn"["price"]=>string(6) "102.30"["introduction"]=>string(5) "ccsss"["phone"]=>string(11) "13246885231"["type_params"]=>string(9) "{"20":22}"["status"]=>int(1)["create_time"]=>int(1701844614)["update_time"]=>int(1701844614)["remark"]=>NULL["award_lists"]=>string(0) ""}["relation"]=>array(0) {}}["type"]=>string(2) "->"["args"]=>array(1) {[0]=>string(11) "award_lists"}}[2]=>array(7) {["file"]=>string(67) "D:\wwwroot\yyex\thinkphp\library\think\model\concern\Conversion.php"["line"]=>int(250)["function"]=>string(7) "toArray"["class"]=>string(11) "think\Model"["object"]=>object(app\daogou\model\Goods)#58 (2) {["data"]=>array(14) {["id"]=>int(14)["user_id"]=>int(2)["type"]=>int(1)["name"]=>string(14) "仙侠小说ss"["photo"]=>string(20) "http://ff12.ffsky.cn"["price"]=>string(6) "102.30"["introduction"]=>string(5) "ccsss"["phone"]=>string(11) "13246885231"["type_params"]=>string(9) "{"20":22}"["status"]=>int(1)["create_time"]=>int(1701844614)["update_time"]=>int(1701844614)["remark"]=>NULL["award_lists"]=>string(0) ""}["relation"]=>array(0) {}}["type"]=>string(2) "->"["args"]=>array(0) {}}[3]=>array(5) {["function"]=>string(13) "jsonSerialize"["class"]=>string(11) "think\Model"["object"]=>object(app\daogou\model\Goods)#58 (2) {["data"]=>array(14) {["id"]=>int(14)["user_id"]=>int(2)["type"]=>int(1)["name"]=>string(14) "仙侠小说ss"["photo"]=>string(20) "http://ff12.ffsky.cn"["price"]=>string(6) "102.30"["introduction"]=>string(5) "ccsss"["phone"]=>string(11) "13246885231"["type_params"]=>string(9) "{"20":22}"["status"]=>int(1)["create_time"]=>int(1701844614)["update_time"]=>int(1701844614)["remark"]=>NULL["award_lists"]=>string(0) ""}["relation"]=>array(0) {}}["type"]=>string(2) "->"["args"]=>array(0) {}}[4]=>array(4) {["file"]=>string(56) "D:\wwwroot\yyex\thinkphp\library\think\response\Json.php"["line"]=>int(36)["function"]=>string(11) "json_encode"["args"]=>array(2) {[0]=>*RECURSION*[1]=>int(256)}}[5]=>array(7) {["file"]=>string(51) "D:\wwwroot\yyex\thinkphp\library\think\Response.php"["line"]=>int(396)["function"]=>string(6) "output"["class"]=>string(19) "think\response\Json"["object"]=>object(think\response\Json)#57 (8) {["options"]=>array(1) {["json_encode_param"]=>int(256)}["contentType"]=>string(16) "application/json"["data"]=>*RECURSION*["charset"]=>string(5) "utf-8"["code"]=>int(200)["allowCache"]=>bool(true)["header"]=>array(1) {["Content-Type"]=>string(31) "application/json; charset=utf-8"}["content"]=>NULL}["type"]=>string(2) "->"["args"]=>array(1) {[0]=>*RECURSION*}}[6]=>array(7) {["file"]=>string(51) "D:\wwwroot\yyex\thinkphp\library\think\Response.php"["line"]=>int(128)["function"]=>string(10) "getContent"["class"]=>string(14) "think\Response"["object"]=>object(think\response\Json)#57 (8) {["options"]=>array(1) {["json_encode_param"]=>int(256)}["contentType"]=>string(16) "application/json"["data"]=>*RECURSION*["charset"]=>string(5) "utf-8"["code"]=>int(200)["allowCache"]=>bool(true)["header"]=>array(1) {["Content-Type"]=>string(31) "application/json; charset=utf-8"}["content"]=>NULL}["type"]=>string(2) "->"["args"]=>array(0) {}}[7]=>array(7) {["file"]=>string(32) "D:\wwwroot\yyex\public\index.php"["line"]=>int(18)["function"]=>string(4) "send"["class"]=>string(14) "think\Response"["object"]=>object(think\response\Json)#57 (8) {["options"]=>array(1) {["json_encode_param"]=>int(256)}["contentType"]=>string(16) "application/json"["data"]=>*RECURSION*["charset"]=>string(5) "utf-8"["code"]=>int(200)["allowCache"]=>bool(true)["header"]=>array(1) {["Content-Type"]=>string(31) "application/json; charset=utf-8"}["content"]=>NULL}["type"]=>string(2) "->"["args"]=>array(0) {}}
}

2:异步消息队列:

tp6+异步任务队列+发送邮件+模型监听_tp6异步下载_Upordo的博客-CSDN博客

3:thinkphp6  + workman 实现即使聊天 通讯:

https://www.cnblogs.com/codehaoran/p/16817231.html

PHP聊天室框架workerman-chat

GitHub - walkor/workerman-chat: Websocket chat room written in PHP based on workerman.

前端聊天模板:lemon imui(gitee)

thinkphp :

 

think PHP libary  Bootstrap类型

相关文章:

thinkphp lists todo

来由&#xff1a; 数据库的这个字段我想返回成&#xff1a; 新奇的写法如下&#xff1a; 逻辑层的代码&#xff1a; public function goodsDetail($goodId){$detail $this->good->where(id, $goodId)->hidden([type_params,user_id])->find();if (!$detail) {ret…...

【Flutter】创建应用顶级组件,应用根组件 (学习记录)

前言 在 Flutter 中&#xff0c;应用的顶级组件或根组件通常是在 main() 函数中通过 runApp() 方法创建的。这个组件通常是一个 MaterialApp、CupertinoApp、GetMaterialApp 或其他类似的应用框架组件。 以下是一个创建 MaterialApp 作为根组件的示例&#xff1a; void main()…...

AI材料专题报告:AI革命催生新需求国产替代推动新方向

今天分享的AI系列深度研究报告&#xff1a;《AI材料专题报告&#xff1a;AI革命催生新需求国产替代推动新方向》。 &#xff08;报告出品方&#xff1a;光大证券&#xff09; 报告共计&#xff1a;25页 1、算力需求增长催生 800G 光模块需求 算力是数字经济时代新生产力&…...

JVM 分析GC日志

GC日志参数 -verbose:gc 输出gc日志信息&#xff0c;默认输出到标准输出 -XX:PrintGC 输出GC日志。类似&#xff1a;-verbose:gc -XX:PrintGCDetails 在发生垃圾回收时打印内存回收详细的日志&#xff0c;并在进程退出时输出当前内存各区域分配情况 -XX:PrintGCTimeStam…...

阿里云服务器环境配置,ssh免密登录和配置docker

此文章适合ubuntu20.04 64位和ubuntu22.04 64位版本 一.登陆服务器 租完服务器后&#xff0c;首选需要使用本地gitbash或者cmd进入服务器&#xff0c; 命令&#xff1a; ssh rootxxx xxx为服务器公网ip&#xff0c;然后yes&#xff0c;然后输入密码就会进入自己的服务器&am…...

【LeetCode】2621. 睡眠函数

睡眠函数 Promise异步 题目题解 题目 请你编写一个异步函数&#xff0c;它接收一个正整数参数 millis &#xff0c;并休眠 millis 毫秒。要求此函数可以解析任何值。 示例 1&#xff1a; 输入&#xff1a;millis 100 输出&#xff1a;100 解释&#xff1a; 在 100ms 后此异步…...

网络入门---TCP通信实现

目录标题 前言准备工作 tcpserver.hpp构造函数初始化函数(listen)运行函数(accept) tcpserver.cctcpclient.hpp构造函数初始化函数运行函数(connect) tcpclient.cc问题测试改进一&#xff1a;多进程改进二&#xff1a;多线程改进三&#xff1a;线程池完整代码 前言 在前面的文…...

neuq-acm预备队训练week 8 P2661 [NOIP2015 提高组] 信息传递

题目背景 NOIP2015 Day1T2 题目描述 有 n 个同学&#xff08;编号为 1 到n&#xff09;正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象&#xff0c;其中&#xff0c;编号为 i 的同学的信息传递对象是编号为 Ti​ 的同学。 游戏开始时&#xff0c;每人都…...

《C++新经典设计模式》之第18章 备忘录模式

《C新经典设计模式》之第18章 备忘录模式 备忘录模式.cpp 备忘录模式.cpp #include <iostream> #include <vector> #include <memory> using namespace std;// 保存对象内部状态&#xff0c;必要时恢复 // 在不破坏封装性的前提下&#xff0c;捕获对象的内部…...

OWASP安全练习靶场juice shop-更新中

Juice Shop是用Node.js&#xff0c;Express和Angular编写的。这是第一个 完全用 JavaScript 编写的应用程序&#xff0c;列在 OWASP VWA 目录中。 该应用程序包含大量不同的黑客挑战 用户应该利用底层的困难 漏洞。黑客攻击进度在记分板上跟踪。 找到这个记分牌实际上是&#…...

当使用RSA加密,从手机前端到服务器后端的请求数据存在+

将转成了空格&#xff0c;导致解密出错 将空格转成了...

BUUCTF crypto做题记录(3)新手向

目录 一、Rabbit 二、篱笆墙的影子 三、丢失的MD5 四、Alice与Bob 一、Rabbit 得到的密文&#xff1a;U2FsdGVkX1/ydnDPowGbjjJXhZxm2MP2AgI 依旧是看不懂是什么编码&#xff0c;上网搜索&#xff0c;在侧栏发现Rabbit解码&#xff0c;直接搜索就能有在线解码网站 二、篱笆…...

SpringMVC修炼之旅(2)基础入门

一、第一个程序 1.1环境配置 略 1.2代码实现 package com.itheima.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;//定义…...

matlab 最小二乘拟合空间直线(方法二)

目录 一、算法原理1、算法过程2、参考文献二、代码实现三、结果展示四、相关链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理...

ASPICE-汽车软件开发能力评级

Automotive SPICE&#xff08;简称A-SPICE 或 ASPICE&#xff09;&#xff0c;全称是“Automotive Software Process Improvement and Capacity dEtermination”&#xff0c;即“汽车软件过程改进及能力评定”模型框架。 常被用于评估一家汽车软件供应商的软件开发能力&#x…...

准确!!!在 CentOS 8 上配置 PostgreSQL 14 的主从复制

在 CentOS 8 上配置 PostgreSQL 14 的主从复制&#xff0c;并设置 WAL 归档到特定路径 /home/postgres/archive 的步骤如下&#xff1a; 主服务器配置&#xff08;主机&#xff09; 配置 PostgreSQL&#xff1a; 编辑 postgresql.conf 文件&#xff1a; vim /data/postgres/p…...

leetcode 1466

leetcode 1466 使用dfs 遍历图结构 如图 node 4 -> node 0 -> node 1 因为节点数是n, 边长数量是n-1。所以如果是从0出发的路线&#xff0c;都需要修改&#xff0c;反之&#xff0c;如果是通向0的节点&#xff0c;例如节点4&#xff0c;则把节点4当作父节点的节点&…...

想学编程,但不知道从哪里学起,应该怎么办?

怎样学习任何一种编程语言 我将教你怎样学习任何一种你将来可能要学习的编程语言。本书的章节是基于我和很多程序员学习编程的经历组织的&#xff0c;下面是我通常遵循的流程。 1&#xff0e;找到关于这种编程语言的书或介绍性读物。 2&#xff0e;通读这本书&#xff0c;把…...

Python数据科学视频讲解:Python概述

2.1 Python概述 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解2.1节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。内容涵盖数据科学应用的全流程&#xff0c;包括数据科学应用和…...

数据结构之内部排序

目录 7-1 直接插入排序 输入格式: 输出格式: 输入样例: 输出样例: 7-2 寻找大富翁 输入格式: 输出格式: 输入样例: 输出样例: 7-3 PAT排名汇总 输入格式: 输出格式: 输入样例: 输出样例: 7-4 点赞狂魔 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&a…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器&#xff0c;docker&#xff0c;镜像&#xff0c;k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究

摘要&#xff1a;在消费市场竞争日益激烈的当下&#xff0c;传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序&#xff0c;探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式&#xff0c;分析沉浸式体验的优势与价值…...