Как изменить запрос метода Laravel Auth::attempt?

Мне нужно изменить запрос Laravel по умолчанию с Auth::attempt().

В документах я увидел два пути:

  • Передайте больше параметров в метод Auth::attempt();
  • Создай свой User provider.

Первое решение у меня не работает, потому что мне нужно добавить предложение OR в запрос (SELECT * FROM users WHERE email=? OR phone=?), а не предложение AND. Второе решение должно быть правильным, но очень сложным, так как мне нужен только метод retrieveByCredentials.

Есть ли другой способ сделать это?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
0
17
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не уверен, что это задокументировано, но вы можете сделать следующее:

$givenField = '123456';

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

Это немного хакерски. Обычно это позволяет вам запрашивать другие таблицы, но здесь это то же самое.

Другие вопросы по теме