#laravel #null
#laravel #null
Вопрос:
Я пытаюсь аутентифицировать 2 пользователей по наследству в проекте Laravel.
В моей миграции у меня есть только 1 столбец, который может быть нулевым, этот столбец — электронная почта. В этом столбце я ожидаю двойной аутентификации профессоров и выпускников, у меня также есть 2 типа регистров, в одном есть входной адрес электронной почты, а в другом нет. В моей базе данных у меня есть 2 пользователя, один — профессор, а другой выпускник, у профессора есть электронная почта, а у другого также есть электронная почта, потому что они принадлежат к одной таблице, но это электронное письмо имеет значение NULL в строке выпускного столбца.
Я пытаюсь проверить, когда я вхожу в систему, имеет ли этот пользователь столбец электронной почты значение null, мое представление возвращает alumn. Если это не null, мой просмотр возвращает professor.
Я попытался проверить, является ли значение электронной почты нулевым в моем контроллере Laravel.
Это мой код
public function index()
{
$user = User::where('email', '=', Input::get('email'))->first();
if ($user == 'NULL'){
return ('alumn');
}
if ($user != 'null'){
return ('professor');
}
}
И мой маршрутизатор Laravel выглядит следующим образом.
Route::get('/home', 'HomeController@index')->name('home');
Я также попробовал эту функцию в своем контроллере вместо другой.
if (User::where('email', '=', Input::get('email'))->count() > 0) {
// user found
}
И с помощью exists() вместо count().
Если вам интересно, я возвращаю просто строку прямо сейчас в целях тестирования.
Ответ №1:
Проблема, с которой вы столкнулись, находится в ваших условных обозначениях. ($user == 'NULL')
и ($user != 'null')
. Что вы проверяете в данный момент, если пользовательским объектом является следующая строка: "NULL"
.
Это не то, как вы проверяете значение null. Есть много вариантов, которые будут работать.
if (empty($user)){
return view('alumn');
}
// OR
if (!$user) {
return view('alumn');
}
// OR
if (is_null($user)) {
return view('alumn');
}
Сработало бы. Вы также могли бы использовать is_null
. Если вы хотели проверить, что user равен null
, вы не можете заключать null в кавычки.
Комментарии:
1. или
$user === null
(без кавычек)
Ответ №2:
first()
Метод вернет null
, если данных нет, поэтому используйте is_null()
вместо этого, например :
if ( is_null($user) ) {
return view('alumn');
}else{
return view('professor');
}
Ответ №3:
К вашему сведению, first()
вернет вам значение null, когда в базе данных нет данных, поэтому я надеюсь, что это поможет вам
public function index()
{
$user = User::where('email', '=', Input::get('email'))->first();
if ( is_null($user) ) {
return view('alumn');
} else {
return view('professor');
}
}
Ответ №4:
Все ответы выше не сработали в моем случае. Итак, я сделал это, чтобы оно того стоило.
public function index()
{
$user = Auth::user();
if ($user->email == ''){
return ('alumne');
}
else{
return ('professor');
}
print_r(Auth::user());
}
Сначала я напечатал свой Auth::user, чтобы проверить, все ли работает правильно, затем я попытался сохранить аутентификацию в переменной с именем user.
Затем я проверил с помощью условия, и все работало нормально.
Ответ №5:
public function index() {
$user = User::where('email', '=', Input::get('email'))->first();
if (empty($user)) {
return view('alumn');
} else {
return view('professor');
}
}