Jonatan UranJonatan Uran
Jonatan Uran
Comparte:

Model-binding + cache

Tengo el siguiente conflicto para utilizar CACHE, dado que mi Controlador usa el Model-binding provisto por Laravel 

Enlace para mostrar un empleado:
<a href="{{ route('employee.show', $employee) }}">
  Enlace a show
</a>


web.php:
Route::get('employee/{employee}', [EmployeeController::class, 'show'])->name('employee.show');

app/Http/Controller/EmployeeController.php
class EmployeeController extends Controller
{
...
public function show(Employee $employee): View
{
return view('employees.show',compact('employee'));
}

Mi pregunta es: Cómo puedo hacer para que el llamado a mi función que usa el model-binding (que hace una consulta a la Base de Datos [select * from `employees` where `id` = 1 limit 1]) pueda utilizar cache y no ejecute esa consulta.

Actualmente lo solucioné enviando el id en lugar del objeto completo (quitando el model-binding):
Enlace para mostrar un empleado:
<a href="{{ route('employee.show', $employee->id) }}">
  Enlace a show
</a>

app/Http/Controller/EmployeeController.php
----------------------------------
class EmployeeController extends Controller
{
 ...

 public function show($id): View
 {
 $employee  = Cache::remember('employee.{$id}', 3600, function() use($id){
            return Employee::find($id);
        });

     return view('employees.show',compact('employee'));
 }

Pero quiero saber si existe alguna sintaxis que me permita seguir enviando el objeto completo y utilizar caché. 
Gracias