|
@@ 250-262 (lines=13) @@
|
| 247 |
|
$id_field = static::$location_info[$location_type][P_ID]; |
| 248 |
|
$table_name = static::$location_info[$location_type][P_TABLE_NAME]; |
| 249 |
|
// TODO Как-то вернуть может быть LIMIT 1 ? |
| 250 |
|
if ($result = classSupernova::$db->doUpdate("UPDATE {{{$table_name}}} SET {$set} WHERE `{$id_field}` = {$record_id}")) { |
| 251 |
|
if (classSupernova::$db->db_affected_rows()) { |
| 252 |
|
// Обновляем данные только если ряд был затронут |
| 253 |
|
// TODO - переделать под работу со структурированными $set |
| 254 |
|
|
| 255 |
|
// Тут именно так, а не cache_unset - что бы в кэшах автоматически обновилась запись. Будет нужно на будущее |
| 256 |
|
//static::$data[$location_type][$record_id] = null; |
| 257 |
|
SnCache::cacheUnsetElement($location_type, $record_id); |
| 258 |
|
// Вытаскиваем обновленную запись |
| 259 |
|
static::db_get_record_by_id($location_type, $record_id); |
| 260 |
|
SnCache::cache_clear($location_type, false); // Мягкий сброс - только $queries |
| 261 |
|
} |
| 262 |
|
} |
| 263 |
|
|
| 264 |
|
return $result; |
| 265 |
|
} |
|
@@ 302-312 (lines=11) @@
|
| 299 |
|
public static function db_ins_record($location_type, $set) { |
| 300 |
|
$set = trim($set); |
| 301 |
|
$table_name = static::$location_info[$location_type][P_TABLE_NAME]; |
| 302 |
|
if ($result = classSupernova::$db->doInsert("INSERT INTO `{{{$table_name}}}` SET {$set}")) { |
| 303 |
|
if (classSupernova::$db->db_affected_rows()) // Обновляем данные только если ряд был затронут |
| 304 |
|
{ |
| 305 |
|
$record_id = classSupernova::$db->db_insert_id(); |
| 306 |
|
// Вытаскиваем запись целиком, потому что в $set могли быть "данные по умолчанию" |
| 307 |
|
$result = static::db_get_record_by_id($location_type, $record_id); |
| 308 |
|
// Очищаем второстепенные кэши - потому что вставленная запись могла повлиять на результаты запросов или локация или еще чего |
| 309 |
|
// TODO - когда будет поддержка изменения индексов и локаций - можно будет вызывать её |
| 310 |
|
SnCache::cache_clear($location_type, false); // Мягкий сброс - только $queries |
| 311 |
|
} |
| 312 |
|
} |
| 313 |
|
|
| 314 |
|
return $result; |
| 315 |
|
} |
|
@@ 325-335 (lines=11) @@
|
| 322 |
|
$fields = implode(',', array_keys($field_set)); |
| 323 |
|
|
| 324 |
|
$table_name = static::$location_info[$location_type][P_TABLE_NAME]; |
| 325 |
|
if ($result = classSupernova::$db->doInsert("INSERT INTO `{{{$table_name}}}` ({$fields}) VALUES ({$values});")) { |
| 326 |
|
if (classSupernova::$db->db_affected_rows()) { |
| 327 |
|
// Обновляем данные только если ряд был затронут |
| 328 |
|
$record_id = classSupernova::$db->db_insert_id(); |
| 329 |
|
// Вытаскиваем запись целиком, потому что в $set могли быть "данные по умолчанию" |
| 330 |
|
$result = static::db_get_record_by_id($location_type, $record_id); |
| 331 |
|
// Очищаем второстепенные кэши - потому что вставленная запись могла повлиять на результаты запросов или локация или еще чего |
| 332 |
|
// TODO - когда будет поддержка изменения индексов и локаций - можно будет вызывать её |
| 333 |
|
SnCache::cache_clear($location_type, false); // Мягкий сброс - только $queries |
| 334 |
|
} |
| 335 |
|
} |
| 336 |
|
|
| 337 |
|
return $result; |
| 338 |
|
} |