Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用?:拉维语中的速记_Php_Laravel_Ternary Operator - Fatal编程技术网

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;
可能重复的