Conozco dos métodos:
El primero es usar un parámetro de objeto de Request en la función del controlador.
public function index(Request $request) { $user = $request->user(); return view('home'); } El segundo es usar directamente la fachada Auth .
public function index() { $user = Auth::user(); return view('home'); }¿Hay alguna diferencia? ¿Un método es mejor que el otro y, en caso afirmativo, por qué?
Esto es solo una cuestión de preferencia, puede usar:
public function index(Request $request) { $user = $request->user(); return view('home'); }o
public function index() { $user = Auth::user(); return view('home'); }o
public function index(Guard $auth) { $user = $auth->user(); return view('home'); }o
public function index() { $user = auth()->user(); return view('home'); }Todos funcionarán igual. No existe un método mejor o peor para un código tan simple.
En el controlador no hace mucha diferencia, pero en caso de que escriba algunos servicios y desee probarlos (escribiendo algunas pruebas unitarias, por ejemplo), en mi opinión, una mejor solución sería inyectar Guard en el constructor en lugar de ejecutar Auth fachada o auth() ayudante.
La fachada Auth proporciona un atajo pero el resultado es el mismo. Siempre puede usar \Auth::user() desde su controlador o vistas, por otro lado, si desea usar la variable $request , debe pasarla a sus vistas.