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:
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