Doctrine DQL conditional query

后端 未结 1 956
一个人的身影
一个人的身影 2021-01-01 07:25

I\'m trying to build a dynamic query with Doctrine\'s query builder. Let\'s say I\'d also like to optionally select an end time in the following (only if one was entered). H

相关标签:
1条回答
  • 2021-01-01 07:49

    I'd do something like this:

    // 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();
    
    0 讨论(0)
提交回复
热议问题