Lumen PHP change field name in JSON

32 Views Asked by At

I have a table in my database with some fields:

  • id
  • name
  • xx

When I call an API, I get one item from my database and return it:

$table = MyTable::select('table.*')->where('id', $id)->first();
return response()->json($table, 200);

I get a json like that:

{
  "id": 1,
  "name": "user1",
  "xx": 0
}

I can remove the xx field by adding it to he $hidden field inside the model.

How can I rename the xx in yy ? Does it exists a simpler way than adding a getter/setter on a yy field inside my model ?

To get:

{
  "id": 1,
  "name": "user1",
  "yy": 0
}
1

There are 1 best solutions below

0
Galih Anggara On BEST ANSWER

The first method is using setHidden and select alias like below :

$table = MyTable::select('table.*', "table.xx as yy")->where('id', $id)->first()->setHidden(["xx"]);
return response()->json($table, 200);

Or you can map response using Associative Array but you have to map every fields like below :

$table = MyTable::select('table.*')->where('id', $id)->first();
return response()->json([
  "id" => $table->id,
  "name" => $table->name,
  "yy" => $table->xx
], 200);

Or unset like below :

$table = MyTable::select('table.*')->where('id', $id)->first()->toArray();
$table["xx"] = $table["yy"];
unset($table["yy"]);
return response()->json($table, 200);