Laravel When Condition в столбце

У меня есть ModelA со столбцами: имя, фамилия, адрес электронной почты.

Я хочу, чтобы ModelA с именем Test добавила дополнительную информацию по электронной почте.

я попробовал следующее

$model_a_res = A::when(
function($query){
    return $query->where('name','Test');
},
function ($query) { 
    $query->where('email', 'NOT LIKE', '%@test%');})
->first();

Я хочу, чтобы в эту секунду запускался только A с именем столбца = Test однако это не работает.

Я попробовал это с именем пользователя Майк и его адресом электронной почты [email protected], но он не появился в результате.

некоторые данные

id name email

1 Test [email protected] 
2 Test [email protected]
3 Mike [email protected]
4 Mike [email protected]

в результатах должны быть и 3, и 4 1 и 2, поскольку у них есть имя = У Теста будет другой запрос, который проверит, есть ли у него @test в его электронной почте, если да, то он не будет возвращен возвращены строки 2, 3, 4

не могу понять, о чем ты спрашиваешь

Abdulla Nilam 08.03.2024 11:26

Расскажите нам, какие входы + что вы ожидаете на выходе.

Abdulla Nilam 08.03.2024 11:28

Добавьте дополнительные запросы, дополнительные условия, если эта строка имеет имя столбца = Test

Zein 08.03.2024 11:28

Это неполный вопрос. Добавьте к нему дополнительную информацию.

Abdulla Nilam 08.03.2024 11:30
when() выполняет замыкание только в том случае, если первый аргумент истинен. По этой логике ваш первый параметр не возвращает true. Но нам понадобится больше информации.
geertjanknapen 08.03.2024 11:49
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Для этого нельзя использовать when().

$model_a_res = A::where(function ($query) {
    $query->where('name', '!=', 'Test')
          ->orWhere(function ($query) {
              $query->where('name', '=', 'Test')
                    ->where('email', 'NOT LIKE', '%@test%');
          });
})->get();

Выходы

1 Test [email protected]  -  will skipp
2 Test [email protected] - added
3 Mike [email protected]  - added
4 Mike [email protected]  - added

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