在 laravel 中使用 ?: shorthand
Using ?: shorthand in laravel
我有一个登录功能,用于使用电话phone 号码登录用户。我从用户那里获取 phone 号码,然后使用 phone 号码获取匹配的电子邮件地址。
为此我有这个代码
public function processLogin(Request $request){
$phone = $request->get('phone');
$getEmail = User::where('users_telephone_number', '=',$phone )->first()->email;
$email = $getEmail;
$password = $request->get('password');
//echo $email.$password;
$data = array(
'email' => $email,
'password' => $password
);
if (Auth::attempt($data,true)) {
当数字错误时,我得到这个错误
Trying to get property of non-object
为了解决这个问题,我想让变量 $getEmail
等于 none@dont.com
,这将像所有其他错误的电子邮件和密码组合一样失败。
我怎样才能确保我在用来获取电子邮件的这一行中发现了错误
User::where('users_telephone_number', '=',$phone )->first()->email;
首先检查 $user,然后访问电子邮件。
$user = User::where('users_telephone_number', '=',$phone )->first();
$email = isset($user) ? $user->email : 'default string';
$phone = $request->get('phone');
$getEmail = User::where('users_telephone_number', '=',$phone )->first();
$email = $getEmail ? $getEmail->email : null;
if(!$email)
return abort(400);
或测试空值:
$user = User::where('users_telephone_number', '=',$phone )->first();
$email = $user ? $user->email : 'default string';
如果您的查询没有 return 任何 User
实例,它将 return 默认空值。
或者...您可以测试电子邮件
$password = $request->get('password');
$user = User::where('users_telephone_number', '=', $phone)->whereNotNull('email')->first();
if ($user && Auth::attempt([$user->email, $password], true)) {
...
}
您正在立即尝试获取您要获取的对象的电子邮件 属性。
我建议使用方法 findOrFail
,当没有找到结果时会抛出 NotFoundException
,这将 return 抛出 404 not found
.
整体看起来像这样:
$user = User::where('users_telephone_number', '=',$phone )->findOrFail();
$email = $user->email;
我有一个登录功能,用于使用电话phone 号码登录用户。我从用户那里获取 phone 号码,然后使用 phone 号码获取匹配的电子邮件地址。
为此我有这个代码
public function processLogin(Request $request){
$phone = $request->get('phone');
$getEmail = User::where('users_telephone_number', '=',$phone )->first()->email;
$email = $getEmail;
$password = $request->get('password');
//echo $email.$password;
$data = array(
'email' => $email,
'password' => $password
);
if (Auth::attempt($data,true)) {
当数字错误时,我得到这个错误
Trying to get property of non-object
为了解决这个问题,我想让变量 $getEmail
等于 none@dont.com
,这将像所有其他错误的电子邮件和密码组合一样失败。
我怎样才能确保我在用来获取电子邮件的这一行中发现了错误
User::where('users_telephone_number', '=',$phone )->first()->email;
首先检查 $user,然后访问电子邮件。
$user = User::where('users_telephone_number', '=',$phone )->first();
$email = isset($user) ? $user->email : 'default string';
$phone = $request->get('phone');
$getEmail = User::where('users_telephone_number', '=',$phone )->first();
$email = $getEmail ? $getEmail->email : null;
if(!$email)
return abort(400);
或测试空值:
$user = User::where('users_telephone_number', '=',$phone )->first();
$email = $user ? $user->email : 'default string';
如果您的查询没有 return 任何 User
实例,它将 return 默认空值。
或者...您可以测试电子邮件
$password = $request->get('password');
$user = User::where('users_telephone_number', '=', $phone)->whereNotNull('email')->first();
if ($user && Auth::attempt([$user->email, $password], true)) {
...
}
您正在立即尝试获取您要获取的对象的电子邮件 属性。
我建议使用方法 findOrFail
,当没有找到结果时会抛出 NotFoundException
,这将 return 抛出 404 not found
.
整体看起来像这样:
$user = User::where('users_telephone_number', '=',$phone )->findOrFail();
$email = $user->email;