2015-08-21 40 views
8

因此,通常如果您有權訪問laravel中的用戶id,則可以運行User :: find($ id),但是說您無權訪問用戶的id,用戶名。有沒有比使用DB ::查詢來定位用戶更好的方法?按用戶名在Laravel中查找用戶

這是我目前的解決方案,想知道如果有人可能知道更好的方法。

$user_id = DB::table('users')->where('username', $user_input)->first()->id; 
+1

你可以做whereUsername( $ user_input)而不是在哪裏,雖然 – rjdown

+1

可能並沒有真正的區別,也許使用' - > value('id');'?以及代替' - > first() - > id' –

回答

20

是的,甚至更好的使用模型。就像這樣

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(); 
+0

我有laravel中的問題,請參閱如果您可以回答[link](http://stackoverflow.com/questions/32318866/unable-to-retrieve-data-sent-via-ajax-in-控制器-laravel-5-1) –

0
$user_id = DB::table('users')->where('username', $user_input)->first(); 

無 「 - > ID」

檢查這裏:http://laravel.com/docs/5.0/queries

+0

我在laravel有一個問題,請看看你是否可以回答[link](http://stackoverflow.com/questions/32318866/unable-to-retrieve-data - 通過阿賈克斯在控制器laravel-5-1) –

+0

@Adamnick,你有沒有得到一個適合你的答案? – mdamia

+0

尚未@mdamia –

4

這取決於。如果用戶在您登錄可以有你想要的任何信息:

$field = Auth::user()->field; 

但是,如果他們沒有登錄,你只是希望自己的user_id你可以使用:

$user_id = User::select('id')->where('username', $username)->first(); 
+0

是的,我明白使用Auth :: user() - >等等,但我需要找到一個用戶通過他們指定的用戶名沒有他們登錄。感謝您提供替代代碼我一直在使用。我只是想檢查是否有更好或更有效的選擇。再一次,謝謝。 – Brandon