Извлечь значения из одной строки строки для foreach - PullRequest
0 голосов
/ 05 августа 2020

Я извлек два введенных имени пользователя из текстовой строки с тегом @ упоминание.

Теперь я хочу поместить их в foreach l oop, чтобы я мог использовать свой doctrine экземпляр для поиска их имени пользователя .

Мой код:

function find(TextEntity $text)
{
    preg_match_all('/@([a-zA-Z0-9]+)/', $text->getText(), $usernames);

    $extractedText = implode('", "', $usernames[1]);
}

Результат, который я получаю:

"john", "jane"

Я не могу найти способ извлечь их, поэтому могу использовать по одному в foreach l oop.

Итак, моя попытка: ( update: рабочий раствор )

$usernames = $usernames[1];

$query = $this->em->getRepository(User::class)
        ->createQueryBuilder('m')
        ->select('m')
        ->where('m.email IN (:emails)')
        ->setParameter('emails', $usernames)
        ->getQuery()
        ->getResult();

1 Ответ

2 голосов
/ 06 августа 2020

Поскольку usernames[1] уже массив , вы можете перебирать его:

preg_match_all('/@([a-zA-Z0-9]+)/', $text->getText(), $usernames);

$usernames = $usernames[1];

И поскольку doctrine поддерживает предложение where in () в findBy, вы можете использовать это массив без foreach:

$findUsers = $this->em->getRepository(User::class)->findBy([
    'username' => $usernames
]);

print_r(findUsers);

Вы можете изменить этот код по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...