用户登录时,如何根据用户输入的用户名、邮箱或手机号自动匹配账号并登录呢?

LoginController 中重写 AuthenticatesUsers Trait 的 attemptLogin 方法:

app/Http/Controllers/Auth/LoginController.php

.
.
.
    protected function attemptLogin(Request $request)
    {
        return collect(['name', 'email', 'mobile'])->contains(function ($value) use ($request) {
            $account = $request->username;
            $password = $request->password;
            return $this->guard()->attemp(
                [
                    $value => $account,
                    'password' => $password
                ],
                $request->filled('remember')
            );
        });
    }
.
.
.

通过给集合的 contains 方法传递一个闭包执行自己的可信测试。有关此方法的介绍,请参见 文档