public function buildBetweenCondition($operator, $operands, &$params)
{
if (!isset($operands[0], $operands[1], $operands[2])) {
throw new InvalidParamException("Operator '{$operator}' requires three operands.");
}
list($column, $value1, $value2) = $operands;
if (strpos($column, '(') === false) {
$column = $this->db->quoteColumnName($column);
}
if ($value1 instanceof Expression) {
foreach ($value1->params as $n => $v) {
$params[$n] = $v;
}
$phName1 = $value1->expression;
} else {
$phName1 = self::PARAM_PREFIX . count($params);
$params[$phName1] = $value1;
}
if ($value2 instanceof Expression) {
foreach ($value2->params as $n => $v) {
$params[$n] = $v;
}
$phName2 = $value2->expression;
} else {
$phName2 = self::PARAM_PREFIX . count($params);
$params[$phName2] = $value2;
}
return "{$column} {$operator} {$phName1} AND {$phName2}";
}