gpt4 book ai didi

php - 如何在 Laravel 中将连接结果作为对象数组获取?

转载 作者:行者123 更新时间:2023-12-04 01:17:14 24 4
gpt4 key购买 nike

我一直致力于一个个人项目,用户可以在其中对不同的商店进行评分。其中,我有两个正在处理的表模式。

表:商店

  1. 编号
  2. 店名
  3. user_id(店铺属于某个用户)

表:评分

  1. 编号
  2. shop_id(外键)
  3. 评分
  4. 用户编号

现在我想使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com