2011-05-27 67 views
0

在整個應用程序中,我需要每次執行訪問User對象(Doctrine)幾次(我的意思是每次顯示頁面),所以在某些情況下,而不是每次都從數據庫中檢索它,認爲將它存儲一次然後再使用它會更好。在symfony 1.4中存儲用戶原則對象

我可以將它存儲在sfContext中嗎?

回答

1

Symfony的阻礙保存對象到會話,看這裏例如:http://www.symfony-project.org/gentle-introduction/1_4/en/06-Inside-the-Controller-Layer#chapter_06_sub_accessing_the_user_session

...但是,您可以保存user_ids和其他保存查詢的位。這實際上取決於你在所有這些頁面上需要做的事情是否需要整個用戶對象。如果是的話,$this->getUser()->getGuardUser()是你最終使用的地方。

+0

我不是在談論保存會話中的用戶對象,我的意思是我需要在執行期間請求期間有用戶對象。例如,其中一個組件每次從數據庫請求時都會加載用戶。在動作中,如果它被加載到組件中,我不想再次獲取用戶,所以我需要使組件變量可用於操作。這有意義嗎? – DavidW 2011-05-29 03:28:11

+0

你確定每次都會加載嗎?它應該只對數據庫創建一個實際查詢,即使它位於組件內部。 – Tom 2011-05-29 09:31:52

1

如果您指的是當前登錄的用戶對象,它應該已經自動爲您加載。在認證時,系統會加載用戶記錄,並保留在會話中。

在操作中,可以檢索與用戶對象:

$this->getUser() 

在視圖中,它已經加載到變量:

$sf_user