大田区から発信するゆるゆる日記

主にITエンジニアに関する備忘録日記。たまに趣味も。何か不備があればコメント頂けると幸いです。Twitterアカウント https://twitter.com/ryuzan03

【Laravel】リソース(Resource)

※下記の内容に不備がありましたら、コメント頂けると幸いです。また、下記の内容をご使用頂ける場合は自己責任でお願いします。

【目次】

 

背景

今の学習ではAPIが重要になってくるにも関わらず、Resourceについてよく理解していなかったので調べてみました。

 

Resource

Resourceとは?

モデルやモデルコレクションを簡単にJSONデータへと変換してくれます。

 

ResourceクラスはAPI構築時に「Eloquentモデル」と「ユーザーに対して返信するJSONリスポンス」の間に、トランスレーションの役割として設置が必要とされます。

 

Resourceは1つのモデルを配列へ変換します。CollectionResourceはモデルのCollectionを配列へ変換します。

 

Resourceの使い方

※詳しくはこちらを参照してください。

 

Resourceの場合は、特定のモデルを配列に変換するように記述するだけです。

<?php
namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\Resource;

class UserResource extends Resource
{
/**
* リソースを配列へ変換する
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
];
}
}

toArrayメソッドを全Resourceクラスで定義することで、JSONに変換する必要のある属性の配列を、レスポンスを送り返す時に返してくれます。

Resourceクラスは、変換するためにアクセスするモデルのプロパティとメソッドに、自動的に仲介するため、$this変数を使用して直接モデルのプロパティにアクセスできます。

 

用語

トランスレーション

データの内容を変えずに形式を変換すること。

 

参考

素晴らしい記事に感謝いたします。

Eloquent: APIリソース 5.5 Laravel

【Laravel】APIリソースを使う(Json/Resource) - Laravel・PHP入門