Symfony1.4とORMPropelでプロジェクトを作成しました。2つのプロジェクトがあります。1つは古いプロジェクトで、もう1つは新しいプロジェクトです。私たちの古いプロジェクトは今年初めに開始され、多くの問題があり、新しいプロジェクト(新しいドメイン名とより優れた機能)を作成しようとしました。ただし、ログイン情報を使用して古いサイトを使用しているユーザー(SfGuardユーザーなど)がいます。古いサイトのユーザーが同じログイン情報を使用して新しいサイトにログインできるようにします。sfGuardユーザー情報(古いサイトから)をFixturesにダンプし、新しいサイトにロードしてみました。しかし、それはうまくいきませんでした。とにかくそれができることはありますか。
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で実行されないことに注意してください。ただし、コードは次のようになります。
また、SQLパッチは、ユーザーに関するデータベース情報をcsvにダンプし、古いユーザーを新しいデータベースに追加するために必要なすべてのクエリを作成するコードによって生成されたある種のpatch.sqlを作成することによって作成できます。ドンデになったら、パッチを新しいデータベースに適用します。