【发布时间】:2017-12-18 03:50:37
【问题描述】:
我正在使用Query Builder 通过此查询从多个连接表中获取结果:
$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();
一个产品可以关联多张图片。
通过上面的查询,我得到了这个结果:
[
{
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"
}
]
如您所见,两行是一种产品的退货,而我希望文档数据在一行中返回类似的东西:
[
{
product_id: 3,
name: "Test",
reference: "ref-test",
price: 123,
image_path: "product/product-3/",
image_name:
[
"product_1.jpg", "product_2.jpg"
]
}
]
有没有办法直接用查询生成器来做,或者需要其他处理?
【问题讨论】:
-
您是否为这些表设置了
Eloquent模型? -
是的,每张桌子我都设置好了
-
你设置好图片的关系了吗?
-
您的意思是
Product模型中的函数返回hasMany(App\Images)吗?如果是,不,我没有,因为对于这个查询,我只使用Query Builder。 -
公平 :) 仅供参考,关系将是
belongsToMany而不是hasMany
标签: json laravel laravel-query-builder