【问题标题】:take backup of sfguard users in symfony在 symfony 中备份 sfguard 用户
【发布时间】:2011-09-15 09:44:15
【问题描述】:

我们在 Symfony 1.4 和 ORM Propel 中创建了我们的项目。我们有两个项目,一个是旧的,另一个是新的。我们的旧项目是今年早些时候推出的,其中有很多问题,我们尝试创建一个新项目(使用新域名和更好的功能)。 但是我们有一些用户使用带有登录信息的旧站点(即 SfGuard 用户)。 我们希望旧站点的用户可以使用相同的登录信息登录到我们的新站点。 我们尝试将 sfGuard 用户信息(来自旧站点)转储到 Fixtures 并将其加载到我们的新站点。但它没有用。 有没有我们可以做到的。

【问题讨论】:

    标签: symfony-1.4 sfguard login-system


    【解决方案1】:

    我没有太多信息可以给出更准确的答案(你的意思是转储没有奏效?,你使用的是什么数据库?)但从你提供的数据来看,我的第一个方法是在使用两个数据库(旧数据库和新数据库)的新项目,跨越用户在新数据库中创建一个新用户,并从旧数据库中检索信息。 为此,在您的 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 上运行,但你的代码最终会看起来像这样。

    还可以通过将有关用户的数据库信息转储到 csv 并创建由某些代码生成的某种 patch.sql 来制作 SQL 补丁,该代码创建将旧用户添加到新数据库所需的所有查询。完成后,将补丁应用到新数据库。

    【讨论】:

    • 我正在使用 MySQL,我已经使用 Propel 转储了数据,使用命令“Symfony propel:data-dump >> fixtures.yml”它确实转储了数据,一切都很好,但我无法使用旧的登录信息登录。仅适用于 SFGuard 数据。
    • @Harish_Kurup 我会推荐任务方法
    猜你喜欢
    • 1970-01-01
    • 2011-05-08
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多