如何更改LaravelAuth::attempt方法查询?
How to change Laravel Auth::attempt method query?
我需要更改 Auth::attempt()
的默认 Laravel 查询。
在文档中我看到了两种方式:
- 向
Auth::attempt()
方法传递更多参数;
- 创建我自己的
User provider
。
第一个解决方案对我不起作用,因为我需要在查询 (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');
]);
这有点老套。它通常允许您查询其他表,但这里是同一个
我需要更改 Auth::attempt()
的默认 Laravel 查询。
在文档中我看到了两种方式:
- 向
Auth::attempt()
方法传递更多参数; - 创建我自己的
User provider
。
第一个解决方案对我不起作用,因为我需要在查询 (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');
]);
这有点老套。它通常允许您查询其他表,但这里是同一个