我正在尝试使用Doctrine的查询构建器构建动态查询.假设我也想在下面选择一个结束时间(只有输入一个).我如何有条件地将这个添加到声明中?
$query = $this->getEntityManager()->createQueryBuilder()
->select('m')
->from($this->getEntityName(), 'm')
->where("m.start > '" . date('Y-m-d H:i:s', strtotime($start)) . "'")
->getQuery();
Run Code Online (Sandbox Code Playgroud)
我会做这样的事情:
// 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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3199 次 |
| 最近记录: |