Doctrine DQL условный запрос

Я пытаюсь построить динамический запрос с помощью построителя запросов Doctrine. Допустим, я также хотел бы дополнительно выбрать время окончания в следующем (только если оно было введено). Как бы я добавил это условно в утверждение?

    $query = $this->getEntityManager()->createQueryBuilder()
        ->select('m')
        ->from($this->getEntityName(), 'm')
        ->where("m.start > '" . date('Y-m-d H:i:s', strtotime($start)) . "'")
        ->getQuery();

Ответы на вопрос(1)

Решение Вопроса

Я бы сделал что-то вроде этого:

// 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('Y-m-d H:i:s', strtotime($start)));
);

// put your condition here
if (isset($end)) {
    $conditions[] = $qb->expr()->lt('m.end', date('Y-m-d 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();
 user49665020 февр. 2012 г., 21:10
Это работает. Спасибо! Однако это должно быть: $ condition = call_user_func_array (array ($ qb-> expr (), 'andx'), $ condition);

Ваш ответ на вопрос