Por lo general, si tiene acceso a la identificación de un usuario en laravel, puede ejecutar User::find($id), sin embargo, diga que no tiene acceso a la identificación del usuario y solo a su nombre de usuario. ¿Hay una mejor manera que usar DB::query para localizar al usuario?
Esta es mi solución actual y me preguntaba si alguien posiblemente conocía una mejor manera.
$user_id = DB::table('users')->where('username', $user_input)->first()->id;
Sí, incluso mejor usando el modelo. así como esto
User::where('username','John') -> first();
// or use like
User::where('username','like','%John%') -> first();
User::where('username','like','%John') -> first();
User::where('username','like','Jo%') -> first();
-
Depende de su definición de ‘aún mejor’. Hay un impacto en el rendimiento al usar consultas de modelo en lugar de consultas de base de datos, por lo que algunos podrían argumentar que el uso de OP es una buena ruta. Depende del uso.
– SupaMonkey
1 de agosto de 2019 a las 8:33
Depende. Si un usuario ha iniciado sesión, puede obtener cualquier información que desee:
$field = Auth::user()->field;
Pero si no han iniciado sesión y solo desea su ID de usuario, puede usar:
$user_id = User::select('id')->where('username', $username)->first();
-
Sí, entiendo el uso de Auth::user()->blah, pero necesitaba encontrar un usuario por su nombre de usuario especificado sin que haya iniciado sesión. Gracias por proporcionar una alternativa al código que había estado usando. Solo quería comprobar si había una alternativa mejor o más eficiente. Una vez más, gracias.
– Brandón
23 de agosto de 2015 a las 18:25
$user_id = DB::table('users')->where('username', $user_input)->first();
sin “->id”
Chequea aquí: http://laravel.com/docs/5.0/consultas
-
@Adamnick, ¿obtuviste una respuesta que te funcionó?
– mdamia
1 de septiembre de 2015 a las 3:37
puedes hacer whereUsername($user_input) en lugar de where, aunque no hay mucha diferencia
– rjdown
21 de agosto de 2015 a las 18:44
Tal vez use
->value('id');
? también en lugar de->first()->id
–David Nguyen
21 de agosto de 2015 a las 19:12