獲取商品詳情的進階版:
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"
}
]
}
]
}
