2014-04-26 4 views
1

Im работает Laravel 4 для моего приложения ... Я новичок.Laravel 4 - Проверьте, соответствует ли значение базы данных

Я создал небольшое небольшое приложение, используя стандартную встроенную аутентификацию, и все работает нормально.

У меня есть модель User.php и файл маршрутов, который заботится обо всех моих запросах.

Что я хочу сделать, это добавить администраторов, я добавил поле в моей таблице пользователей, которая называется «is_admin» .. его целое число от 1 или 0.

Что я хочу, чтобы иметь возможность сделать что-то вроде следующего

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

может кто-нибудь помочь мне с тем, как я могу добиться того, что .. Все, что я есть в данный момент представляет собой столбец базы данных.

Приветствия,

ответ

3

На самом деле вы можете проверить, если пользователь является администратором ВЗ не с помощью этого:

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

Смежные вопросы