git*_*ula 3 php mysql json laravel laravel-5
我一直在从事一个个人项目,用户可以在其中对不同的商店进行评分。其中,我正在处理两个表模式。
表:商店
表:评级
现在我想使用 SQL 连接获取所有商店及其相应的评级。
$shop = Shop::leftJoin('ratings', 'ratings.shop_id', '=', 'shops.id')
->select('shops.*', 'ratings.rating')->get();
return response($shop);
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我得到了回复,但同一商店的每个评级都会重复该回复。
[
{
"id": 1,
"name": "manjil",
"rating": 4
},
{
"id": 1,
"name": "manjil",
"rating": 5
},
{
"id": 1,
"name": "manjil",
"rating": 2
}]
Run Code Online (Sandbox Code Playgroud)
我真正想要的是:
[{
"id": 1,
"name": "manjil",
"rating": [4,5,2]
}]
Run Code Online (Sandbox Code Playgroud)
请 Laravel 极客帮忙:)
简单的解决方案是直接使用关系
$shops = Shop::with('ratings')->get();
//possible mapping here
return response($shops);
Run Code Online (Sandbox Code Playgroud)
之后您可以映射评级以仅获取字段的数组rating
$shops = $shops->map(function ($shop) {
$shop->ratings = $shop->ratings->pluck('rating')->all();
return $shop;
});
Run Code Online (Sandbox Code Playgroud)