【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変数を使用して直接モデルのプロパティにアクセスできます。
用語
トランスレーション
データの内容を変えずに形式を変換すること。
参考
素晴らしい記事に感謝いたします。