2011-06-15 13 views
0

我們在Symfony 1.4和ORM Propel中創建了我們的項目。我們有兩個項目,一個是舊的,另一個是新的。我們的舊項目今年早些時候推出,並且存在許多問題,我們試圖創建一個新項目(使用新的域名和更好的功能)。 但我們有一些用戶使用舊網站的登錄信息(即SfGuard用戶)。 我們希望來自舊網站的用戶可以使用相同的登錄信息登錄到我們的新網站。 我們試圖通過將sfGuard用戶信息(從舊網站)轉儲到Fixtures並將其加載到我們的新網站。但它沒有工作。 有無論如何,我們可以做到這一點。作爲symfony中的sfguard用戶的備份

回答

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修補程序,該代碼創建將舊用戶添加到新數據庫所需的所有查詢。有一次,將補丁應用到新的數據庫。

+0

我正在使用MySQL,並使用Propel,命令「Symfony propel:data-dump >> fixtures.yml」轉儲數據,並且每件事情都很好,但我無法登錄與舊的登錄信息。僅適用於SFGuard數據。 – 2011-06-15 13:33:01

+0

@Harish_Kurup我會推薦任務方法 – guiman 2011-06-15 13:36:16

+0

謝謝,我明白了。你搖滾! – 2011-06-16 05:24:30