我们已经在Symfony 1.4和ORM Propel中创建了我们的项目。我们有两个项目,一个是旧的,另一个是新的。我们的旧项目是在今年早些时候启动的,其中有很多问题,我们试图创建一个新项目(具有新的域名和更好的功能)。但我们有一些用户使用旧网站的登录信息(即SfGuard用户)。我们希望旧站点的用户可以使用相同的登录信息登录到我们的新站点。我们已经尝试通过转储sfGuard用户信息(从旧网站)到固定装置,并加载到我们的新网站。但是它并没有起作用。我们有没有办法做到这一点。
发布于 2011-06-15 21:26:09
我没有太多的信息可以给出一个更准确的(你说转储不起作用是什么意思?你使用的是什么数据库?)答:但是根据您提供的数据,我的第一种方法是在使用两个数据库(旧数据库和新数据库)的新项目中创建一个任务,横跨在新数据库中使用从旧数据库检索的信息创建新用户的用户。为此,在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补丁,这些代码创建将旧用户添加到新数据库所需的所有查询。完成后,将补丁应用到新数据库。
https://stackoverflow.com/questions/6355970
复制相似问题