Laravel Cache

Laravel Cache

Configuration .env

CACHE_STORE=database
MEMCACHED_HOST=127.0.0.1

Use Cache

use Illuminate\Support\Facades\Cache;
class CategoryController extends Controller{
    public function index(){
        if(Cache::has('categories')){
            $data = Cache::get('categories');
        }else{
            $data = Category::all();
            Cache::put('categories', $data);
        }
        return $data;
    }
    public function store(Request $req){
        $data = $req->validate(['name' => 'required']);
        return Category::create($data);
    }
    public function show($id){
        $key = 'category_' . $id;
        if(Cache::has($key)){
            $data = Cache::get($key);
        }else{
            $data = Category::find($id);
            Cache::put($key, $data);
        }
        return $data;
    }
    public function update(Request $req, int $id){
        Cache::deleteMultiple(['categories', 'category_' . $id]);
        $data = $req->validate(['name' => 'required', 'id' => 'required']);
        $obj = Category::find($id);
        return $obj->update($data);
    }
    public function destroy(int $id){
        Cache::delete('categories');
        Cache::delete('category_' . $id);
        return Category::find($id)->delete();
    }
}