我一直致力于一个个人项目,用户可以在其中对不同的商店进行评分。其中,我有两个正在处理的表模式。
表:商店
- 编号
- 店名
- user_id(店铺属于某个用户)
表:评分
- 编号
- shop_id(外键)
- 评分
- 用户编号
现在我想使用 SQL 连接获取所有商店及其相应的评级。
$shop = Shop::leftJoin('ratings', 'ratings.shop_id', '=', 'shops.id')
->select('shops.*', 'ratings.rating')->get();
return response($shop);
当我这样做时,我得到了回应,但对同一商店的每个评级都会重复。
[
{
"id": 1,
"name": "manjil",
"rating": 4
},
{
"id": 1,
"name": "manjil",
"rating": 5
},
{
"id": 1,
"name": "manjil",
"rating": 2
}]
我真正想要的是:
[{
"id": 1,
"name": "manjil",
"rating": [4,5,2]
}]
请Laravel极客们帮忙:)
最佳答案
简单的解决方案是直接使用关系
$shops = Shop::with('ratings')->get();
//possible mapping here
return response($shops);
之后您可以映射评级以仅获取字段 rating
$shops = $shops->map(function ($shop) {
$shop->ratings = $shop->ratings->pluck('rating')->all();
return $shop;
});
关于php - 如何在 Laravel 中将连接结果作为对象数组获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63137003/