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 = FieldsPeer::doSelectRS($oCriteria);
|
||||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
|
|
||||||
while ($oDataset->next()) {
|
while ($oDataset->next()) {
|
||||||
$auxField = $oDataset->getRow();
|
$auxField = $oDataset->getRow();
|
||||||
if ($auxField['FLD_TYPE'] == 'TIMESTAMP') {
|
if ($auxField['FLD_TYPE'] == 'TIMESTAMP') {
|
||||||
$auxField['FLD_TYPE'] = 'DATETIME';
|
$auxField['FLD_TYPE'] = 'DATETIME';
|
||||||
}
|
}
|
||||||
$this->fields[] = $auxField;
|
$this->fields[] = $auxField;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->fields;
|
return $this->fields;
|
||||||
@@ -396,30 +396,26 @@ class AdditionalTables extends BaseAdditionalTables
|
|||||||
eval('$count = ' . $sClassPeerName . '::doCount($oCriteria);');
|
eval('$count = ' . $sClassPeerName . '::doCount($oCriteria);');
|
||||||
|
|
||||||
if ($filter != '' && is_string($filter)) {
|
if ($filter != '' && is_string($filter)) {
|
||||||
$stringOr = '$oCriteria->add(';
|
$stringOr = '';
|
||||||
$closure = '';
|
$closure = '';
|
||||||
$compare = '';
|
|
||||||
$types = array('INTEGER', 'BIGINT', 'SMALLINT', 'TINYINT', 'DECIMAL', 'DOUBLE', 'FLOAT', 'REAL');
|
$types = array('INTEGER', 'BIGINT', 'SMALLINT', 'TINYINT', 'DECIMAL', 'DOUBLE', 'FLOAT', 'REAL');
|
||||||
foreach ($aData['FIELDS'] as $aField) {
|
foreach ($aData['FIELDS'] as $aField) {
|
||||||
if ($aField['FLD_NAME'] != 'APP_UID') {
|
if ($aField['FLD_NAME'] != 'APP_UID') {
|
||||||
$compare = '"%' . $filter . '%", Criteria::LIKE';
|
|
||||||
|
|
||||||
if (in_array($aField['FLD_TYPE'], $types)) {
|
if (in_array($aField['FLD_TYPE'], $types)) {
|
||||||
if (is_numeric($filter)) {
|
if (is_numeric($filter)) {
|
||||||
$compare = '"' . $filter . '", Criteria::EQUAL';
|
$stringOr = $stringOr . '$a = $oCriteria->getNewCriterion(' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ', "' . $filter . '", Criteria::EQUAL)' . $closure . ';';
|
||||||
} else {
|
$closure = '->addOr($a)';
|
||||||
$compare = 'null, Criteria::ISNULL';
|
|
||||||
}
|
}
|
||||||
|
} 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);
|
eval($stringOr);
|
||||||
|
|
||||||
$oCriteriaCount = clone $oCriteria;
|
$oCriteriaCount = clone $oCriteria;
|
||||||
eval('$count = ' . $sClassPeerName . '::doCount($oCriteria);');
|
eval('$count = ' . $sClassPeerName . '::doCount($oCriteria);');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user