首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从查询构建器返回特定的JSON格式

从查询构建器返回特定的JSON格式
EN

Stack Overflow用户
提问于 2017-07-13 19:30:03
回答 1查看 1.5K关注 0票数 0

我使用Query Builder通过以下查询从多个连接表中获取结果:

代码语言:javascript
复制
$products = DB::table('products as p')
              ->select(
                  'p.id',
                  'p.name',
                  'p.reference',
                  'p.price',
                  'i.path',
                  'i.name'
                )
              ->join('products_r_images as pri', 'pri.product_id', '=', 'p.id')
              ->join('images as i', 'i.id', '=', 'prd.image_id')
              ->get();

一个产品可以关联多个图像。

通过上面的查询,我得到了以下结果:

代码语言:javascript
复制
[
    {
        id: 3,
        name: "Test",
        reference: "ref-test",
        price: 123,
        image_path: "product/product-3/",
        image_name: "product_1.jpg"
    },
    {
        id: 3,
        name: "Test",
        reference: "ref-test",
        price: 123,
        image_path: "product/product-3/",
        image_name: "product_2.jpg"
    }
]

正如您所看到的,两行是一个产品的退货,而我希望在一行中有文档数据退货,如下所示:

代码语言:javascript
复制
[
    {
        product_id: 3,
        name: "Test",
        reference: "ref-test",
        price: 123,
        image_path: "product/product-3/",
        image_name: 
        [
            "product_1.jpg", "product_2.jpg"
        ]
    }
]

有没有办法直接用Query Builder来做这件事,或者需要另一种处理方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-13 20:03:32

如果您只想使用Query Builder执行此操作,那么您应该能够:

代码语言:javascript
复制
$products = DB::table('products as p')
    ->select(
        'p.id',
        'p.name',
        'p.reference',
        'p.price',
        'i.path',
        'i.name'
    )
    ->join('products_r_images as pri', 'pri.product_id', '=', 'p.id')
    ->join('images as i', 'i.id', '=', 'prd.image_id')
    ->get()
    ->groupBy('id')
    ->map(function ($products) {

        $product = $products->first();
        $product->image_name = $products->pluck('image_name');

        return $product;
    });

希望这能有所帮助!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45079339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档