如何更改LaravelAuth::attempt方法查询?

How to change Laravel Auth::attempt method query?

我需要更改 Auth::attempt() 的默认 Laravel 查询。

在文档中我看到了两种方式:

第一个解决方案对我不起作用,因为我需要在查询 (SELECT * FROM users WHERE email=? OR phone=?) 上添加 OR 子句,而不是 AND 子句。 第二种解决方案应该是正确的,但非常复杂,因为我只需要 retrieveByCredentials 方法。

还有其他方法吗?

不确定是否记录在案,但您可以执行以下操作:

$givenField = '123456';

Auth::attempt([
  'email' => function ($query) use ($givenField) { 
     $query->where('email', $givenField)
       ->orWhere('phone', $givenField)->from('users')->select('email');
]);

这有点老套。它通常允许您查询其他表,但这里是同一个