Безболезненно поменять системное имя в поле

InstantCMS 2.X
#16 28 апреля 2018 в 00:57
Уже хотел сказать ладно забейте. Ну негоже людей своими, так сказать, мелочами отвлекать.
Ну раз уж начал… Видимо всё это мне для того чтобы маленькими шагами, но идти вперёд в мире сайтостроения, в т.ч. в БД.
Вот букву "А" изучаю в алфавите про Базы MySQL.
Спасибо Ris за компонент по частому сохранению БД. Так хоть менее опасно неумелому по ней лазить.

Итак, если не надоело, по системному имени (СИ) city:
В БД старые city и city_cache удалил. По идее они не использовались.
gorod и gorod_cache изменил на city и city_cache
Наверное, делать так можно ведь.
По идее ничего неправильного не сделал?

Единственное, города пользователей пропали.
Города ведь не восстановить? Никак не перенести? Только вручную вбивать? То есть, при изменении системного имени данные иногда теряются?
Хотя, при изменении системного СИ "пол", данные не потерялись.
Видимо, потому что не было напортачено с созданием двух СИ с разными названиями, но с одинаковой функцией.
#17 28 апреля 2018 в 02:33

В БД старые city и city_cache удалил. По идее они не использовались.
gorod и gorod_cache изменил на city и city_cache

Polzovinst
Надо было сначала проверить в каких таблицах была информация о городах!
Возможно вы удалили те в которых были города, а переименовали пустые.
#18 28 апреля 2018 в 03:01
в сity колонке хранился идентификатор таблицы cms_geo_cities а в city_cache значение name из этой же таблицы что бы каждый раз не лазить за значением
#19 28 апреля 2018 в 04:24


Надо было сначала проверить в каких таблицах была информация о городах!
Возможно вы удалили те в которых были города, а переименовали пустые.

vikont
Когда удалил city и city_cache ничего не произошло
Когда переименовал gorod и gorod_cache в city и city_cache города пользователей пропали.
#20 28 апреля 2018 в 04:27


в сity колонке хранился идентификатор таблицы cms_geo_cities а в city_cache значение name из этой же таблицы что бы каждый раз не лазить за значением

ideasdigger
Получается их удалять нельзя, чтоб не пропали данные, но и gorod и gorod_cache тогда не переименовывается в city и city_cache
#21 28 апреля 2018 в 04:51
_cache задаётся через функцию storeCachedValue класса поля City, а сохраняется в бд используя getLocationTypeValue того же класса, я хз смотреть лень но при переименовки поля из админки _сache переименовывается ли…
  1.  
  2.  
  3. public function storeCachedValue($value){
  4.  
  5. return $this->getLocationTypeValue($value, $this->getOption('location_type'));
  6.  
  7. }
  8.  
  9. private function getLocationTypeValue($id, $location_type){
  10.  
  11. $model = new cmsModel();
  12.  
  13. $item_name = $model->getField('geo_'.$location_type, $id, 'name');
  14.  
  15. if($item_name){
  16. return $item_name;
  17. }
  18.  
  19. return null;
  20.  
  21. }
  22.  
тобишь в твоём случае инпут выбора города системная переменная gorod, тип поля city, тебе надо сделать сист. имя city, вместо gorod как я понял, в общем. посмотри в phpmyadmin таблицы cms_users_fields переименуй своё gorod в city проверь что бы в колонке другое поле не имело name city, далее перейди в таблицу cms_users и переименуй gorod, gorod_cache в city, city_cache проверив отсутствия этих колонок, ну и обязательно сделай экспорт этих таблиц с данными до изменения или копию в настройках с каким нибудь преффиксом
#22 11 мая 2018 в 05:01
Поменял в cms_users_fields и помогло.

Теперь в админке в профиле пользователя системное имя тоже изменилось.

Спасибо!

Теперь данные из uLogin как положенно передаются.

Надеюсь изменений только лишь в cms_users_fields достаточно для корректной работы этих полей на сайте.
#23 21 мая 2018 в 05:12


посмотри в phpmyadmin таблицы cms_users_fields переименуй своё gorod в city проверь что бы в колонке другое поле не имело name city, далее перейди в таблицу cms_users и переименуй gorod, gorod_cache в city, city_cache проверив отсутствия этих колонок, ну и обязательно сделай экспорт этих таблиц с данными до изменения или копию в настройках с каким нибудь преффиксом

ideasdigger
Думал, что проблема решилась переименовыванием "gorod" в "city" в таблице cms_users_fields. Но данные то о городе в профилях пользователей пропали.
В таблице cms_users "gorod" в "city" нельзя переименовать, потому что "city" уже есть.

Остаётся только выход: переносить строки из таблицы "gorod" в таблицу "city". И, из "gorod_cache" в "city_cache"

Какой для этого есть SQL-запрос?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.