сделать резервную копию пользователей sfguard в symfony - PullRequest
0 голосов
/ 15 июня 2011

Мы создали наш проект в Symfony 1.4 и ORM Propel.У нас есть два проекта, один старый, а другой новый.Наш старый проект был запущен ранее в этом году и имел много проблем, и мы попытались создать новый проект (с новым доменным именем и улучшенной функциональностью).Но у нас есть пользователи, использующие старый сайт с информацией для входа (например, пользователи SfGuard).Мы хотим, чтобы наш пользователь со старого сайта мог войти на наш новый сайт, используя те же данные для входа.Мы попытались сбросить информацию о пользователе sfGuard (со старого сайта) в Fixtures и загрузить ее на наш новый сайт.Но это не сработало.есть ли в любом случае, что мы можем сделать это.

1 Ответ

1 голос
/ 15 июня 2011

У меня не так много информации, чтобы дать более точный ответ (что вы имеете в виду, что дамп не сработал? Какую базу данных вы используете?), Но из предоставленных вами данных мой первый подход заключается в создании задачи вновый проект, который использует обе базы данных (старую и новую), пересекает пользователей, создавая нового пользователя в новой базе данных с информацией, полученной из старой.Для этого добавьте обе базы данных в ваш database.yml, создайте old_sfGuard_schema.yml и укажите базу данных для использования, а также определите классы sfGuard (имена классов должны быть такими же, как sfOldGuardUser, sfOldGuardCredential и т. Д., Чтобы несбой с текущими sfGuardClasses) вам нужно.Наконец, ваш код должен звучать примерно так:

public function execute([..])
{
  foreach(sfOldGuardUsersPeer::doSelect(new Criteria()) as $old_user)
  {
   $new_user = new sfGuardUser();
   $new_user->setUsername($old_user->getUsername());
   [...]
   foreach($old_user->getCredentials() as $old_user_credential)
   {
     [....]
   }
   $new_user->save();
  }

}

Обратите внимание, что это псевдокод, он не будет работать в Symfony, но ваш код будет выглядеть примерно так.

ТакжеSQL-патч может быть сделан путем сброса информации базы данных о пользователях в CSV-файл и создания своего рода patch.sql, сгенерированного некоторым кодом, который создает все запросы, необходимые для добавления старых пользователей в новую базу данных.Как только появится donde, примените патч к новой базе данных.

...