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"
                }
            ]
        }
    ]
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM