2014-04-26 37 views
1

爲我的應用程序運行Laravel 4 ...我是一個新手。Laravel 4 - 檢查數據庫值是否爲真

我創建了一個使用標準內置身份驗證的小應用程序,一切工作正常。

我有User.php模型和路線文件照顧我的所有請求。

我想要做的,就是添加管理員,我已經被命名爲「is_admin」我的用戶表中添加一個字段..其1或0

的整數我希望能夠到什麼做的是類似如下

if is_admin() { 
    // Do stuff here if im an admin 
} 

誰能幫我了,我怎麼能做到這一點。所有我目前所面對的是一個數據庫列。

乾杯,

回答

3

其實你可以檢查,如果用戶是管理員OT不使用這樣的:

if(Auth::user()->is_admin) { 
    //... 
} 

因爲Auth::user()返回當前登錄的用戶和is_admin字段可在users表,如果用戶登錄,那麼您可以通過檢查登錄用戶模型的Auth::user()->is_admin屬性進行檢查。如果用戶是管理員,則值爲1,這將是正確的,並且0結果在if條件中將是錯誤的。

如果你想在用戶模式添加一個方法,那麼你可以試試這個方法:

public function isAdmin() 
{ 
    return $this->is_admin; 
} 

所以,你可以檢查,如:

$user = User::find(1); 
if($user->isAdmin()) { 
    //... 
} 
+1

Ohhhhhhh第一種方法真棒...我完全忘了那! ...非常感謝你 – BigJobbies

+0

不客氣@ChrisSaunders :-) –

0
$val = (bool)DB::table(DB::raw('DUAL'))->whereExists(function($query) use ($userId)) { 
    $query->from = 'users'; 
    $query->where('id', $userId)->where('is_admin', 1)->select(DB::raw(1)); 
})->first([DB::raw(1)]); 

這將運行一個SELECT 1 FROM DUAL WHERE EXISTS (SELECT 1 FROM users WHERE id = X and is_admin = 1如果該行存在與否,將返回一個布爾值的查詢。

DUAL是MySQL中的一個虛擬表,因此我們不必去查表。 DB::raw(1)被使用,因爲我們不需要爲此獲取列數據,我們只是想要true/false。

如果您已經登錄並且正在使用Laravels Auth您可以像提及的@ WereWolf一樣執行操作。

+0

少就是好。 http://en.wikipedia.org/wiki/Less-is-better_effect – mauris