tp6中关联查询的例子
获取商品详情的进阶版:
2.0版本,1.0已经被我删了
商品详情有:基本的内容,主要是评论,这是一对多的关系,一个商品会有多个评论; // 同时,一个评论对应着一个用户的名称 nickname
想办法把这些内容一次性拿出来,并且放在整理好,放在一个数据里并返回。
================================================================================================================
主要逻辑
// 获取商品详情 public function getProductDetail($product,string $reward) { return $this->whereProductId($product) // 根据 product_id 查询数据,TP6里的高级查询 ->with(['comments'=>function($query){ // 关联预载入,关联预查询; $query->filter(function ($comment){ // filter() 在TP6中的 模型/获取器/查询结果处理 可以找到 // 试着打印$comment->toArray(),你就这到这是神仙好东西了。 // halt($comment->toArray()); // 下面那句的意思是:添加一个叫nickname的字段,值为等号右边的值; // 等号右边的意思是,通过User表的 user_id 获取对应的用户名称nickname字段的值 // 同样是TP6里的高级查询 $comment->nickname = User::getFieldByUserId($comment['user_id'],'nickname'); }); }]) ->select(); } // 一对多的模型关联,商品表关联评论表 public function comments() { return $this->hasMany(ProductComment::class,'product_id','product_id'); }
返回的数据
{ "code": 0, "msg": "success", "data": [ { "id": 1, "product_id": 5, "name": "凳子", "brand_id": 1, "sort_id": "百货", "images": "", "detail": "haoyon", "price": "20.00", "market_price": "0.00", "sales": 20, "reward": "0.00", "status": 1, "comments": [ { "id": 1, "product_id": 5, "user_id": 123, "content": "真不错", "nickname": "测试1" }, { "id": 2, "product_id": 5, "user_id": 1234, "content": "不好", "nickname": "测试2" } ] } ] }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具