ハマログ

株式会社イーツー・インフォの社員ブログ

LaravelのModel Serializationをためしてみる

LaravelのEloquent Modelには、モデルクラスのオブジェクトをJSONに変換するメソッドがあります。

公式ドキュメントより

Serializing To JSON
$user = App\User::find(1);
return $user->toJson();
また、stringにキャストすると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モデルより
    /**
     * 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プロパティに型とフォーマットを指定します
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"},
外部ライブラリを導入しなくてよいので、楽なのでした。
AttributeJSONLaravelMocelPHPSerializationtoArraytoJson

  kaneko tomo   2018年2月20日


関連記事

VagrantとAnsibleで仮想環境のCentOS6.5にWordPress環境構築!WebサーバーはNginxですか?(後編)

遂に後編を書くときが来ました。 てるおです。 はいどーも! やることはもう決まっ…

Laravel Passportを使ったOauthサーバ

Oauth2.0の認可サーバを構築したいと思いLaravel Passportを…

Laravelのカスタムバリデーションで日付の妥当性チェック

はじめに Laravelの日付入力で入力画面が年/月/日に分割されているときに、…


← 前の投稿

次の投稿 →