查询生成器where和mysql

时间:2019-06-17 14:44:50

标签: php symfony doctrine query-builder

我正在尝试创建一个查询姓氏和名字的查询。这是我的原始查询。

$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))
    )
);

然后我根据通过api enpoint输入的信息传递动态$ qb。这是我的逻辑。

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 :(得分:0)

我通过这样做解决了。

          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))));
        }