Я пытаюсь построить динамический запрос с помощью построителя запросов Doctrine. Предположим, я также хотел бы выбрать время окончания в следующем (только если бы он был введен). Как я могу добавить это условно к утверждению?
$query = $this->getEntityManager()->createQueryBuilder() ->select('m') ->from($this->getEntityName(), 'm') ->where("m.start > '" . date('Ymd H:i:s', strtotime($start)) . "'") ->getQuery();
Я бы сделал что-то вроде этого:
// first, create the query builder $qb = $this->getEntityManager()->createQueryBuilder() ->select('m') ->from($this->getEntityName(), 'm') ; // add the default condition $conditions = array( $qb->expr()->gt('m.start', date('Ymd H:i:s', strtotime($start))); ); // put your condition here if (isset($end)) { $conditions[] = $qb->expr()->lt('m.end', date('Ymd H:i:s', strtotime($end))); } // convert the conditions to an AND clause $conditions = call_user_func_array(array($qb, 'andX'), $conditions); // add the WHERE clause $qb->where($conditions); // get the query $query = $qb->getQuery();