MetadataResource
The MetadataResource class transforms Meta model instances into JSON responses for API endpoints. It automatically handles JSON decoding for complex values.
Namespace
JobMetric\Metadata\Http\Resources\MetadataResource
Overview
The MetadataResource is a JSON resource that formats metadata for API responses. It automatically decodes JSON values and returns metadata in a clean key-value format.
Basic Usage
Single Metadata
use JobMetric\Metadata\Http\Resources\MetadataResource;
use JobMetric\Metadata\Models\Meta;
$meta = Meta::find(1);
return new MetadataResource($meta);
// Response:
// {
// "color": "red"
// }
Metadata Collection
$metas = $product->metas;
return MetadataResource::collection($metas);
// Response:
// [
// { "color": "red" },
// { "size": "large" },
// { "dimensions": { "width": 10, "height": 20 } }
// ]
Resource Structure
The resource returns metadata in the following format:
{
"key": "value"
}
For JSON values, the value is automatically decoded:
{
"dimensions": {
"width": 10,
"height": 20
}
}
Complete Examples
Controller Response
namespace App\Http\Controllers;
use App\Models\Product;
use JobMetric\Metadata\Http\Resources\MetadataResource;
class ProductMetadataController extends Controller
{
public function index(Product $product)
{
$metas = $product->metas;
return MetadataResource::collection($metas);
}
public function show(Product $product, string $key)
{
$meta = $product->metaKey($key)->first();
if (!$meta) {
return response()->json(['error' => 'Metadata not found'], 404);
}
return new MetadataResource($meta);
}
}
With Pagination
public function index(Product $product)
{
$metas = $product->metas()->paginate(15);
return MetadataResource::collection($metas);
}