将数据添加到laravel对象中

时间:2018-02-28 14:27:54

标签: php laravel laravel-5

所以我的用户控制器中有这种类

public function index()
    {
        $table_data = User::with('CU','pus')->select('id','id_cu','id_pus','name','username','gambar','status','created_at')->filterPaginateOrder();

        return response()
            ->json([
                'model' => $table_data
            ]);
    }

它正在使用名为filterPaginateOrder的特征,我收到的最终结果是:

{
  "model": {
    "current_page": 1,
    "data": [
      {
        "id": 8,
        "id_cu": 0,
        "id_pus": 1,
        "name": "test1",
        "username": "test17",
        "gambar": "",
        "status": 1,
        "created_at": "2018-02-27 06:37:10",
        "c_u": null,
        "pus": {
          "id": 1,
          "name": "Puskopdit BKCU Kalimantan"
        }
      },
      {
        "id": 1,
        "id_cu": 0,
        "id_pus": 1,
        "name": "tony",
        "username": "t0n1zz",
        "gambar": null,
        "status": 1,
        "created_at": "2017-01-01 11:11:11",
        "c_u": null,
        "pus": {
          "id": 1,
          "name": "Puskopdit BKCU Kalimantan"
        }
      }
    ],
    "from": 1,
    "last_page": 1,
    "next_page_url": null,
    "path": "https://bkcuvue.dev/api/v1/user",
    "per_page": "2",
    "prev_page_url": null,
    "to": 2,
    "total": 2
  }
}

那么如果我想在其中添加一些数据怎么办?我希望添加data的每个数组的"role":"master"数组内部我该怎么做?

我尝试$table_data->push('role','master')$table_data->put('role','master')阅读有关集合(laravel返回集合中的那些查询对吗?)但这些代码都没有工作......

2 个答案:

答案 0 :(得分:1)

有两种方法可以解决这个问题。

通过foreach

添加它
$table_data = User::with('CU','pus')->select('id','id_cu','id_pus','name','username','gambar','status','created_at')->filterPaginateOrder();

foreach($table_data->data as $data) {
      $data->role = 'master';
}

或者将其添加到SELECT:

$table_data = User::with('CU','pus')->select('id','id_cu','id_pus','name','username','gambar','status','created_at', DB::raw('"master" as role'))->filterPaginateOrder();

答案 1 :(得分:0)

或者您可以覆盖paginator对象的集合数据。

$table_data = User::with('CU','pus')->select('id','id_cu','id_pus','name','username','gambar','status','created_at')->filterPaginateOrder();
$table_data->getCollection()->each(function($user) {
    $user->role = 'master';
});

return response()->json([
    'model' => $table_data
]);