我正在尝试通过Laravel项目中的继承来验证2个用户。
在我的迁移中,我只有 1 列可以为空,该列是电子邮件。 通过该专栏,我希望对教授和校友进行双重身份验证,我还有 2 种类型的寄存器,一种有输入电子邮件,另一种没有。 在我的数据库中,我有 2 个用户,一个是教授,另一个是校友,教授有电子邮件,另一个也有电子邮件,因为他们属于同一个表,但该电子邮件在校友行中为 NULL。
我正在尝试在登录时检查该电子邮件列的用户是否为空,我的视图返回校友。 如果它不为空,我的观点返回教授。
我试图在我的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()。
如果您想知道,我现在只返回一个字符串以进行测试。
您遇到的问题在您的条件范围内。($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
.如果要检查用户是否等于null
不能在 null 两边加上引号。
如果没有数据,first()
方法将返回null
,因此请使用is_null()
,如下所示:
if ( is_null($user) ) {
return view('alumn');
}else{
return view('professor');
}
仅供参考,当数据库中没有数据时,first()
会返回 null,所以我希望这会对您有所帮助
public function index()
{
$user = User::where('email', '=', Input::get('email'))->first();
if ( is_null($user) ) {
return view('alumn');
} else {
return view('professor');
}
}
上面的所有答案在我的情况下都不起作用。 所以我这样做是为了让它变得值得。
public function index()
{
$user = Auth::user();
if ($user->email == ''){
return ('alumne');
}
else{
return ('professor');
}
print_r(Auth::user());
}
首先,我打印了我的 Auth::user 以检查一切是否正常,然后我尝试将身份验证保存在名为user的变量中。 然后我检查了有条件的,一切正常。
public function index() {
$user = User::where('email', '=', Input::get('email'))->first();
if (empty($user)) {
return view('alumn');
} else {
return view('professor');
}
}