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"
}
]
}
]
}
posted @   励志成为IT大佬的菜鸟  阅读(726)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示