Php 如何修改laravel中Elount返回的数组结构

Php 如何修改laravel中Elount返回的数组结构,php,mysql,laravel,laravel-5,eloquent,Php,Mysql,Laravel,Laravel 5,Eloquent,当前,我有下面的数组结构,运行Bonus::with('users')->get()时会得到它 我尝试过添加数组和合并类似的键,但它不起作用。我尝试使用laravel中提供的helper方法,但似乎无法使其正常工作 [ { "id": 1, "users_id": 1, "bonus_type_id": 1, "is_paid": 0, "amount": "100.00", "description": "desc", "note": null, "created_by": 2, "last_

当前,我有下面的数组结构,运行Bonus::with('users')->get()时会得到它

我尝试过添加数组和合并类似的键,但它不起作用。我尝试使用laravel中提供的helper方法,但似乎无法使其正常工作

[
{
"id": 1,
"users_id": 1,
"bonus_type_id": 1,
"is_paid": 0,
"amount": "100.00",
"description": "desc",
"note": null,
"created_by": 2,
"last_modified_by": null,
"created_at": null,
"updated_at": null,
"deleted_at": null,
"user": {
"id": 1,
"name": "test",
"email": "test@testing.com",
"email_verified_at": null,
"status": 1,
"created_at": "2019-07-18 11:41:35",
"updated_at": "2019-07-18 11:41:35",
"deleted_at": null
}
},
{
"id": 2,
"users_id": 1,
"bonus_type_id": 2,
"is_paid": 0,
"amount": "100.00",
"description": "desc",
"note": null,
"created_by": 2,
"last_modified_by": null,
"created_at": null,
"updated_at": null,
"deleted_at": null,
"user": {
"id": 1,
"name": "test",
"email": "test@testing.com",
"email_verified_at": null,
"status": 1,
"created_at": "2019-07-18 11:41:35",
"updated_at": "2019-07-18 11:41:35",
"deleted_at": null
}
},
{
"id": 3,
"users_id": 2,
"bonus_type_id": 2,
"is_paid": 1,
"amount": "100.00",
"description": "desc",
"note": null,
"created_by": 2,
"last_modified_by": null,
"created_at": null,
"updated_at": null,
"deleted_at": null,
"user": {
"id": 1,
"name": "another test",
"email": "another@testing.com",
"email_verified_at": null,
"status": 1,
"created_at": "2019-07-18 11:41:35",
"updated_at": "2019-07-18 11:41:35",
"deleted_at": null
}
}
]
我希望结果是这样的

[
  {
    user_id: 1,
    name: "test",
    bonuses: [
      {
        bonus_type_id: 1,
        amount: 100,
        is_paid: 0,
      },
      {
        bonus_type_id: 2,
        amount: 100,
        is_paid: 0,
      }
    ],
  },
  {
    user_id: 2,
    name: "another",
    bonuses: [
      {
        bonus_type_id: 2,
        amount: 100,
        is_paid: 1,
      },
    ]
  }
]

你需要改变你雄辩的关系。定义奖金表的
hasMany
关系函数
bonensions
内部
User
模型,并使用该模型获得所需结果,如下所示:

User::with('bonuses')->get();
这样,它将从users表返回结果,并填充每个用户的奖金


有意义吗?

你需要改变你雄辩的关系。定义奖金表的
hasMany
关系函数
bonensions
内部
User
模型,并使用该模型获得所需结果,如下所示:

User::with('bonuses')->get();
这样,它将从users表返回结果,并填充每个用户的奖金


有意义吗?

您可以使用select子查询获取特定信息,如果您的关系设置正确,这应该可以工作

User::select('user_id','name','bonus_id')
    ->with(array('bonuses'=> function($query){
         $query->select('bonus_type_id','amount','is_paid');
    }))->get();

您可以使用select子查询获得特定信息,如果您的关系设置正确,这应该可以工作

User::select('user_id','name','bonus_id')
    ->with(array('bonuses'=> function($query){
         $query->select('bonus_type_id','amount','is_paid');
    }))->get();

如何使用集合返回不同的json响应?请看一下fractal包:是否可以仅依靠Laravel方法来更改响应?请尝试
User::with('bonus')->get()
我如何使用集合返回不同的json响应可以看看分形包:是否可以仅依靠Laravel方法来更改响应?请尝试
User::with('bonuses')->get()
这很有意义!我想我错过了那个!我会试试,让你知道!谢谢如果您有users_id key而不是user_id,请在定义关系时将其明确定义为第二个参数,以便脚本知道目标的外键可以只显示有奖金的用户吗?使用雄辩,你可以在条件下急切地加载。看看这条线,它会帮你的:这是有道理的!我想我错过了那个!我会试试,让你知道!谢谢如果您有users_id key而不是user_id,请在定义关系时将其明确定义为第二个参数,以便脚本知道目标的外键可以只显示有奖金的用户吗?使用雄辩,你可以在条件下急切地加载。查看此线程。它将帮助您: