【问题标题】:Find User in Laravel by Username在 Laravel 中按用户名查找用户
【发布时间】: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

标签: php mysql laravel laravel-4


【解决方案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,你得到了适合你的答案吗?
猜你喜欢
  • 1970-01-01
  • 2014-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
  • 1970-01-01
相关资源
最近更新 更多