Странное поведение ->set - округляет сам по себе
Несмотря на то, что число в set заходит 46818.483, он с упорством мне в базу заносит 46818.5.
Проверил все вплоть до самой функции $adj->set. Даже если в set установить не через переменную, а напрямую это число, все равно в базе отображается округленное число. Причем округляет когда как хочет. Иногда до десятой иногда до сотой…
Проверил все вплоть до самой функции $adj->set. Даже если в set установить не через переменную, а напрямую это число, все равно в базе отображается округленное число. Причем округляет когда как хочет. Иногда до десятой иногда до сотой…
$change = $this->modx->getObject('newEraChange', $this->data_for_change['id_change']);
$types = $this->modx->getFieldMeta($change->get('obj_name'));
if ($types[$change->get('field')]['phptype'] == 'float') {
$new = floatval(str_replace(",", ".", $change->get('new')));
} elseif ($types[$change->get('field')]['phptype'] == 'int') {
$new = intval(str_replace(",", ".", $change->get('new')));
} else {
$new = $change->get('new');
}
$adj = $this->modx->getObject($change->get('obj_name'), $change->get('id_item'));
$adj->set($change->get('field'), $new, $types[$change->get('field')]['phptype']);
$adj->save();
<field key="forecast_oil" dbtype="float" precision="11" phptype="float" null="false" default="0"/>
Подскажите, в чем может крыться причина? Заранее спасибо. Комментарии: 1
Разобрался. Проблема заключалась в том, что в базе тип был REAL и поменял его вручную на DOUBLE
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.