在 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 中按用户名查找用户的主要内容,如果未能解决你的问题,请参考以下文章

在 RESTful Web 服务中按 ID 和用户名查找

在用户表中按名称查找列

是否可以在 Laravel 8 中按 from 和 to user id 分组

Ebean - 在 UUID 列类型中按 UUID 的一部分查找

猫鼬查询:在数组中按 id 查找对象

在 laravel 中查找具有 JWT 令牌的用户 id