IMPROVEMENT: validation of the query to numeric fields and null values are interpreted as 0.
This commit is contained in:
@@ -108,12 +108,12 @@ class AdditionalTables extends BaseAdditionalTables
|
||||
$oDataset = FieldsPeer::doSelectRS($oCriteria);
|
||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
while ($oDataset->next()) {
|
||||
$auxField = $oDataset->getRow();
|
||||
if ($auxField['FLD_TYPE'] == 'TIMESTAMP') {
|
||||
$auxField['FLD_TYPE'] = 'DATETIME';
|
||||
}
|
||||
$this->fields[] = $auxField;
|
||||
while ($oDataset->next()) {
|
||||
$auxField = $oDataset->getRow();
|
||||
if ($auxField['FLD_TYPE'] == 'TIMESTAMP') {
|
||||
$auxField['FLD_TYPE'] = 'DATETIME';
|
||||
}
|
||||
$this->fields[] = $auxField;
|
||||
}
|
||||
|
||||
return $this->fields;
|
||||
@@ -396,30 +396,26 @@ class AdditionalTables extends BaseAdditionalTables
|
||||
eval('$count = ' . $sClassPeerName . '::doCount($oCriteria);');
|
||||
|
||||
if ($filter != '' && is_string($filter)) {
|
||||
$stringOr = '$oCriteria->add(';
|
||||
$stringOr = '';
|
||||
$closure = '';
|
||||
$compare = '';
|
||||
$types = array('INTEGER', 'BIGINT', 'SMALLINT', 'TINYINT', 'DECIMAL', 'DOUBLE', 'FLOAT', 'REAL');
|
||||
foreach ($aData['FIELDS'] as $aField) {
|
||||
if ($aField['FLD_NAME'] != 'APP_UID') {
|
||||
$compare = '"%' . $filter . '%", Criteria::LIKE';
|
||||
|
||||
if (in_array($aField['FLD_TYPE'], $types)) {
|
||||
if (is_numeric($filter)) {
|
||||
$compare = '"' . $filter . '", Criteria::EQUAL';
|
||||
} else {
|
||||
$compare = 'null, Criteria::ISNULL';
|
||||
$stringOr = $stringOr . '$a = $oCriteria->getNewCriterion(' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ', "' . $filter . '", Criteria::EQUAL)' . $closure . ';';
|
||||
$closure = '->addOr($a)';
|
||||
}
|
||||
} else {
|
||||
$stringOr = $stringOr . '$a = $oCriteria->getNewCriterion(' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ', "%' . $filter . '%", Criteria::LIKE)' . $closure . ';';
|
||||
$closure = '->addOr($a)';
|
||||
}
|
||||
|
||||
$stringOr = $stringOr . '$oCriteria->getNewCriterion(' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ', ' . $compare . ')->addOr(';
|
||||
$closure = $closure . ")";
|
||||
}
|
||||
}
|
||||
$stringOr = rtrim($stringOr, '->addOr(') . $closure . ';';
|
||||
$stringOr = $stringOr . '$oCriteria->add($a);';
|
||||
eval($stringOr);
|
||||
|
||||
$oCriteriaCount = clone $oCriteria;
|
||||
$oCriteriaCount = clone $oCriteria;
|
||||
eval('$count = ' . $sClassPeerName . '::doCount($oCriteria);');
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user