Конструктор запросов, где и MySQL - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь создать запрос, который ищет имя и фамилию. Вот мой оригинальный запрос.

$em = $this->getDoctrine()->getManager();
$qb = $em->createQueryBuilder();
$qb ->select('a.firstName, a.lastName, a.relationship, 
            a.dateOfBirth, a.barcode1, a.phoneNumber, ea.address1, 
            ea.address2, ea.city, ea.state, ea.country, ea.postal, 
            s.name, s.keynoteSpeaker, 
            ci.created, \'checkin\' AS event')
    ->from('KCMApiBundle:EventSessionCheckin', 'ci')
    ->innerJoin('ci.eventSession', 's')
    ->innerJoin('ci.eventAttendee', 'a')
    ->leftJoin('a.eventAttendeeAddresses', 'ea')
    ->where($qb->expr()->andX(
               $qb->expr()->eq('ci.eventSession', 
                $qb->expr()->literal($eventSessionId))
    )
);

Затем я передаю динамический $ qb на основе информации, введенной через точку доступа API. Вот моя логика.

if ($match_level === 3){
    list($first, $last) = explode(' ', $filter);

    $first = 'a.firstName='. $first;
    $last =  'a.lastName='. $last;

    $expr->add($qb->expr()->concat($first, $qb->expr()->concat($qb->expr()->literal(' '), $last)));

}

Я пытаюсь создать запрос, который позволяет конечной точке выполнять поиск по имени и фамилии.

1 Ответ

0 голосов
/ 18 июня 2019

Я понял это, сделав это.

          if ($match_level === 3){
                list($first, $last) = explode(' ', $filter);

                $expr2->add($qb->expr()->andX($qb->expr()->eq('a.lastName', $qb->expr()->literal($last))));
                $expr2->add($qb->expr()->andX($qb->expr()->eq('a.firstName',$qb->expr()->literal($first))));
        }
...