建立 ProjectResource.php
檔。
1
| php artisan make:resource ProjectResource
|
指定 API 欄位,並使用 whenLoaded
方法避免總是載入關聯資料。
1 2 3 4 5 6 7 8 9 10 11 12
| public function toArray($request) { return [ 'id' => $this->id, 'name' => $this->name, 'description' => $this->description, 'visibility' => $this->visibility, 'created_at' => $this->created_at->diffForHumans(), 'updated_at' => $this->updated_at->diffForHumans(), 'users' => UserResource::collection($this->whenLoaded('users')), ]; }
|
修改 ProjectController.php
檔。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| use App\Project; use App\Http\Resources\ProjectResource as Resource;
public function index(Project $project) { $projects = $project->paginate();
return Resource::collection($projects); }
public function show(Project $project, $id) { $project = $project->find($id);
return new Resource($project); }
|
添加額外資訊。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| use Illuminate\Support\Str;
class ResponseHelper { public static function response($content) { $meta = [ 'foo' => 'bar', ];
if (is_object($content) && Str::contains(class_basename($content), 'Resource')) { return $content->additional($meta); } } }
|