topall Posted November 14, 2013 Share Posted November 14, 2013 (edited) Есть стандатрный кусок кода который сохраняет одно поле в БД $dropOrder = new DropOrder($dropOrderId); $dropOrder->is_supplier_paid = $payValue; $dropOrder->save(); Он работает и поле сохраняется, но все null поля в текушей строке БД обнуляются. Пробовал делать вот так: $dropOrder->save(true); Не помогает. Как сделать так, чтобы необнулялись никакие поля в БД, а сохранялось лишь одно значение. Версия престы 1.5.4.1 Заранее благодарен. Edited November 14, 2013 by topall (see edit history) Link to comment Share on other sites More sharing options...
absent Posted November 14, 2013 Share Posted November 14, 2013 Есть стандатрный кусок кода который сохраняет одно поле в БД $dropOrder = new DropOrder($dropOrderId); $dropOrder->is_supplier_paid = $payValue; $dropOrder->save(); Он работает и поле сохраняется, но все null поля в текушей строке БД обнуляются. Пробовал делать вот так: $dropOrder->save(true); Не помогает. Как сделать так, чтобы необнулялись никакие поля в БД, а сохранялось лишь одно значение. Заранее благодарен. Как понять обнуляются? Link to comment Share on other sites More sharing options...
topall Posted November 14, 2013 Author Share Posted November 14, 2013 (edited) Как понять обнуляются? У Меня была строка в базе данных, в ней некоторые значения были null. Будь то числовые, строковые поля -- неважно. После сохранения значения с помощью метода save() поля со значения null полей становится 0, если это число либо 0000-00-00 -- для даты. Посмотрел реализацию метода public function save($null_values = false, $autodate = true) { return (int)$this->id > 0 ? $this->update($null_values) : $this->add($autodate, $null_values); } Пробовал делать $null_values = true. Не помогло. Хотя, должно было по идее. Версия престы 1.5.4.1 Edited November 14, 2013 by topall (see edit history) Link to comment Share on other sites More sharing options...
absent Posted November 15, 2013 Share Posted November 15, 2013 может тип поля нетот? Link to comment Share on other sites More sharing options...
sors Posted November 16, 2013 Share Posted November 16, 2013 Так и должно быть. Функция formatValue в classes/ObjectModel.php в соответсвии с типом данных форматирует Link to comment Share on other sites More sharing options...
topall Posted November 18, 2013 Author Share Posted November 18, 2013 Так и должно быть. Функция formatValue в classes/ObjectModel.php в соответсвии с типом данных форматируеК Как этого избежать? Зачем тогда нужен параметр $null_values в функции save()? Как я понял, именно по нему в итоге идет проверка в функции Db->update(): $sql .= ($null_values && ($value['value'] === '' || is_null($value['value']))) ? "`$key` = NULL," : "`$key` = '{$value['value']}',"; Link to comment Share on other sites More sharing options...
topall Posted November 18, 2013 Author Share Posted November 18, 2013 Вот, что посоветовали на stackoverflow.com: Values are formated by ObjectModel::formatValue() before they are inserted / updated, based on the type of the field declared in your $definition. You have to use TYPE_NOTHING to allow NULL values, it's the only way. Take a look in Configuration class, with id_shop and id_group_shop fields. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now