В RatingController:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Http\Resources\RatingResource;
use App\Models\Rating\Rating;
class RatingController extends Controller
{
public function getRatingsByCategory($id)
{
$ratings = cache()->rememberForever('test', function () use ($id) {
return new RatingResource(Rating::findOrFail($id));
});
return response()->json([
'data' => $ratings
]);
}
}
в классе RatingResource
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Http\Resources\Json\ResourceCollection;
class RatingResource extends JsonResource
{
/**
* Transform the resource collection into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->rating_id,
'is_active' => $this->is_active,
'created_at' => '2020',
];
}
}
когда я отправляю запрос этому контроллеру, я получаю этот результат
{
"data": {
"id": 3,
"is_active": 1,
"created_at": "2020"
}
}
но когда Я меняю каждый столбец в RatingResource, например created_at, результат меняется. действительно, laravel не кэширует окончательный результат, он кеширует объект моего запроса, и когда я возвращаю этот объект, он начинает преобразовывать мой объект в формат ресурса. как я могу кэшировать результат ApiResource, пока я не удалю этот ключ кеша.