ハマログ

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

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日


関連記事

MySQLのインデックスサイズに767byteまでしかつかえない問題と対策

Laravel5.4でmigrationを実行したところ、エラーになりました。 …

Laravel5でCarbon locale=>jaに設定

事の始まりは上長より 「setlocale(LC_ALL, ‘ja_…

【連載1回目】WordPress開発に便利なプラグインDebug Bar

wordpressのデバッグを行う為にwordpres4.0ローカル環境にDeb…


← 前の投稿

次の投稿 →