Php 使用?:拉维语中的速记
我有一个登录功能,我是用来登录用户使用电话号码。我从用户那里获取电话号码,然后使用该电话号码获取匹配的电子邮件地址 为此,我有这个代码Php 使用?:拉维语中的速记,php,laravel,ternary-operator,Php,Laravel,Ternary Operator,我有一个登录功能,我是用来登录用户使用电话号码。我从用户那里获取电话号码,然后使用该电话号码获取匹配的电子邮件地址 为此,我有这个代码 public function processLogin(Request $request){ $phone = $request->get('phone'); $getEmail = User::where('users_telephone_number', '=',$phone )->first()->email;
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)) {
当号码错的时候,我得到这个错误
尝试获取非对象的属性
为了解决这个问题,我希望变量$getEmail
等于none@dont.com
与所有其他错误的电子邮件和密码组合一样失败
我如何确保在我用来获取电子邮件的这一行中捕捉到错误
$password = $request->get('password');
$user = User::where('users_telephone_number', '=', $phone)->whereNotNull('email')->first();
if ($user && Auth::attempt([$user->email, $password], true)) {
...
}
User::where('users\u telephone\u number','=',$phone)->first()->email代码>首先检查$user,然后访问电子邮件
$user = User::where('users_telephone_number', '=',$phone )->first();
$email = isset($user) ? $user->email : 'default string';
或测试无效:
$user = User::where('users_telephone_number', '=',$phone )->first();
$email = $user ? $user->email : 'default string';
如果您的查询没有返回任何用户
实例,它将返回默认的空值
或者。。。你可以测试一下电子邮件
$password = $request->get('password');
$user = User::where('users_telephone_number', '=', $phone)->whereNotNull('email')->first();
if ($user && Auth::attempt([$user->email, $password], true)) {
...
}
您正在即时尝试获取要获取的对象的电子邮件属性。
我建议使用方法findOrFail
,当没有找到结果时,将抛出NotFoundException
,它将返回404notfound
总的来说,它将如下所示:
$user = User::where('users_telephone_number', '=',$phone )->findOrFail();
$email = $user->email;
可能重复的