在 Laravel 中按用户名查找用户
Posted
技术标签:
【中文标题】在 Laravel 中按用户名查找用户【英文标题】:Find User in Laravel by Username 【发布时间】:2015-08-21 18:36:25 【问题描述】:所以通常如果你在 laravel 中可以访问用户的 id,你可以运行 User::find($id),但是说你不能访问用户的 id,只能访问他们的用户名。有没有比使用 DB::query 更好的方法来定位用户?
这是我目前的解决方案,想知道是否有人可能知道更好的方法。
$user_id = DB::table('users')->where('username', $user_input)->first()->id;
【问题讨论】:
你可以用 whereUsername($user_input) 代替 where,虽然差别不大 也许使用->value('id');
?以及而不是->first()->id
【参考方案1】:
是的,使用模型会更好。就这样
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();
【讨论】:
取决于您对“更好”的定义。使用模型查询而不是 DB 查询会对性能产生影响——因此有些人可能会争辩说 OP 的使用是一个很好的途径。取决于使用情况。【参考方案2】:这取决于。如果用户已登录,您可以通过以下方式获得所需的任何信息:
$field = Auth::user()->field;
但如果他们没有登录,而您只需要他们的 user_id,您可以使用:
$user_id = User::select('id')->where('username', $username)->first();
【讨论】:
是的,我理解使用 Auth::user()->blah,但我需要在没有登录的情况下通过他们指定的用户名查找用户。感谢您提供替代代码我一直在使用。我只是想检查是否有更好或更有效的替代方案。再次感谢。【参考方案3】:$user_id = DB::table('users')->where('username', $user_input)->first();
没有“->id”
在这里查看:http://laravel.com/docs/5.0/queries
【讨论】:
@Adamnick,你得到了适合你的答案吗?以上是关于在 Laravel 中按用户名查找用户的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 Laravel 8 中按 from 和 to user id 分组