参考lib/base/dao/dao.class.phpt第1527-1557行,需要添加括号加上->markLeft()、->markRight()
/**
* 在左边添加'('。
* Add an '(' at left.
*
* @param int $count
* @access public
* @return ojbect the sql object.
*/
public function markLeft($count = 1)
{
if($this->inCondition and !$this->conditionIsTrue) return $this;
$this->sql .= str_repeat('(', $count);
$this->inMark = true;
return $this;
}
/**
* 在右边增加')'。
* Add an ')' at right.
*
* @param int $count
* @access public
* @return object the sql object.
*/
public function markRight($count = 1)
{
if($this->inCondition and !$this->conditionIsTrue) return $this;
$this->sql .= str_repeat(')', $count);
$this->inMark = false;
return $this;
}
return $this->dao->select('id,amount,dept,signedBy,begin,end,bourse,openBank')->from(TABLE_CONTRACT)
->where('deleted')->eq(0)
->beginIF($mode=='bysearch')
->markLeft() /* 添加左括号“(” */
->andWhere('begin','between',$startDate,$endDate)
->orWhere('end')->between($startDate,$endDate)
->markRight() /* 添加右括号“)” */
->fi()
->beginIF($dept)
->andWhere('dept')->eq($dept)
->fi()
->orderBy($orderBy)
->fetchAll();