Войдите в систему, только если статус = «1» в laravel 5.2

Я работаю с laravel 5.2 и хочу войти в систему, если статус активен.

Route::get('/ProductInquiry', function(){ 
      $id = session('esysid');
      $user = UsersModel::where('employeeID', 'LIKE', $id)->get();
      session(['name' => $user[0]->sAMAccountName]);
      return view('home'); 
})->name('home');

У меня есть столбец состояния в моей базе данных, и мне нужна помощь для аутентификации активных пользователей, получая статус пользователя здесь, в маршрутах, чтобы я мог знать, кто является активными пользователями системы. Я ожидаю входа в систему пользователей со статусом = 1.


person NikNik16    schedule 06.02.2019    source источник


Ответы (3)


Вы можете использовать Laravel Where Clause для достижения вашего результата

Route::get('/ProductInquiry', function(){ 
      $id = session('esysid');
      $userDetail = UsersModel::where('employeeID', $id)->where('status', 1)->first();
      session(['name' => $userDetail->sAMAccountName]);
      return view('home'); 
})->name('home');

Кроме того, поскольку идентификатор сотрудника уникален, вы можете использовать first вместо метода get.

get() - Возвращает коллекцию.

first() - Возвращает один объект.

person Ankur Tiwari    schedule 06.02.2019
comment
Привет, Анкур Тивари, я также получаю ту же ошибку, когда применяю код: ErrorException в строке route.php 38: попытка получить свойство «sAMAccountName» не-объекта - person NikNik16; 06.02.2019
comment
employeeID уникален для всех пользователей? Поскольку в настоящее время вы используете Like. Вместо Like вы можете напрямую передать $id в своем предложении where. - person Ankur Tiwari; 06.02.2019
comment
Проверьте обновленный код. Убедитесь, что нужный вам идентификатор сотрудника существует в БД. - person Ankur Tiwari; 06.02.2019
comment
Большое вам спасибо!!! Теперь это работает, теперь я могу войти в систему для пользователя со статусом = 1 :), а статус со статусом = '0' теперь запрещен. Спасибо, Анкур Тивари! :) - person NikNik16; 06.02.2019
comment
Отлично @NikNik16, продолжай кодить :) - person Ankur Tiwari; 06.02.2019
comment
@ NikNik16 Пожалуйста, примите ответ, так что это будет полезно для тех, у кого есть такая же ошибка. - person Ankur Tiwari; 06.02.2019

Вы должны переосмыслить проверку информации о пользователе

$user = UsersModel::where('status', 1)->find($id)->get();

or

$user = UsersModel::whereStatus(1)->find($id)->get();
person Ugur Kazdal    schedule 06.02.2019
comment
Привет, MuhittinCokelek, я обнаружил ошибку: QueryException в строке Connection.php 729: SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец «e_base_201.id» в «предложении where» (SQL: выберите * из e_base_201, где status = 1 и e_base_201.id = предел WIZ-17-009 1) - person NikNik16; 06.02.2019
comment
@MuhittinCokelek Пожалуйста, проверьте описание find функции laravel. - person Ankur Tiwari; 06.02.2019
comment
вы можете добавить защищенный $privateKey = employeeID; в вашей UsersModel (я догадался, что ваш первичный ключ не является идентификатором - person Ugur Kazdal; 06.02.2019
comment
Я запутался, извините, мой первичный ключ — idCount, который подсчитывает всех пользователей в таблице. - person NikNik16; 06.02.2019
comment
Теперь это работает! спасибо, ребята, за помощь, я действительно ценю это. - person NikNik16; 06.02.2019

Пытаться:

Route::get('/ProductInquiry', function(){ 
    $id = session('esysid');
    $user = UsersModel::where('employeeID', $id)->whereStatus(1)->first();
    session(['name' => $user->sAMAccountName]);
    return view('home'); 
})->name('home');
person Abolfazl Mohajeri    schedule 06.02.2019
comment
Привет, Аболфазл Мохаджери, я получаю: ErrorException в строке 38 route.php: попытка получить свойство sAMAccountName не-объекта - person NikNik16; 06.02.2019
comment
попробуйте dd($user), чтобы убедиться, что он не нулевой и является объектом, содержащим sAMAccountName - person Abolfazl Mohajeri; 06.02.2019
comment
Теперь это работает! спасибо, ребята, за помощь, я действительно ценю это. - person NikNik16; 06.02.2019