Право на точку.
Мне нужно обновить поле в базе данных, используя поле, чтобы сначала вычислить новое значение.
Eg полей: https://i.stack.imgur.com/FADH6.jpg
Теперь я использую функцию Joomla updateObject. Моя цель - взять «потраченное» значение из таблицы БД без использования оператора выбора.
Затем мне нужно вычислить новое значение, например (потрачено + 10,00), и обновить поле новым значением. Проверьте код ниже:
// Create an object for the record we are going to update.
$object = new stdClass();
// Must be a valid primary key value.
$object->catid = $item['category'];
$object->spent = ($object->spent - $item['total']);
// Update their details in the users table using id as the primary key.
$result = JFactory::getDbo()->updateObject('#__mytable', $object, 'catid');
Бит, на котором мне нужно сделать расчет, равен
$object->spent = ($object->spent - $item['total']);
Я понимаю, что могу использовать отдельный оператор вставки, но мне интересно, есть ли лучший способ. Любая помощь очень ценится.
Это должно работать так: БЕЗ ВЫБРАТЬ (рабочий пример)
$query = $db->getQuery(true);
$query->select($db->quoteName('spent'));
$query->from($db->quoteName('#__mytable'));
$query->where($db->quoteName('catid')." = ". $item['category']);
// Reset the query using our newly populated query object.
$db->setQuery($query);
$oldspent = $db->loadResult();
// Create an object for the record we are going to update.
$object = new stdClass();
// Must be a valid primary key value.
$object->catid = $item['category'];
$object->spent = ($oldspent - $item['total']);
// Update their details in the users table using id as the primary key.
$result = JFactory::getDbo()->updateObject('#__mytable', $object, 'catid');