LaravelのModel Serializationをためしてみる
LaravelのEloquent Modelには、モデルクラスのオブジェクトをJSONに変換するメソッドがあります。
公式ドキュメントより
Serializing To JSON
公式ドキュメントより
Serializing To JSON
$user = App\User::find(1);また、stringにキャストするとtoJsonの結果が返される実装になっています(使わないけど)
return $user->toJson();
$user = App\User::find(1);
return (string) $user;
// (string) $user = $user->toJson
少し試してみます。
$users = User::first(); echo $users->toJson();結果
{ "id": 1, "loginid": "id0001", "name": "Sato Gorou", "created_at": "2018-02-05 13:02:50", "updated_at": "2018-02-05 13:02:50" }
コレクション
$users = User::all(); echo $users->toJson();結果
[ { "id": 1, "loginid": "id0001", "name": "Sato gorou", "created_at": "2018-02-05 13:02:50", "updated_at": "2018-02-05 13:02:50" }, { "id": 2, "loginid": "id0002", "name": "Yamada Hanako", "created_at": "2018-02-05 13:02:50", "updated_at": "2018-02-05 13:02:50" } ]
シリアライズ時に出力したくない項目がある場合は、Modelのhiddenプロパティにプロパティ名を指定します。
標準のUserモデルより
標準のUserモデルより
/** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ];
hiddenの逆で、これだけ見せたい!という項目がある場合は、visibleプロパティに項目名を指定します。
公式ドキュメントより
公式ドキュメントより
/** * The attributes that should be visible in arrays. * * @var array */ protected $visible = ['first_name', 'last_name'];
日付型のフォーマット
castsプロパティに型とフォーマットを指定します
castsプロパティに型とフォーマットを指定します
protected $casts = [ 'created_at' => 'date:Y-m-d', 'updated_at' => 'datetime:Y-m-d H:00', ];結果
(略),"created_at":"2018-02-05","updated_at":"2018-02-05 13:00"},
外部ライブラリを導入しなくてよいので、楽なのでした。