2012-07-27 5 views
0
내 ZendFramework 프로젝트에 Doctrine2를 사용

를 작동하지 않고 내가 문제가 나를 위해 해결하기가 쉽지 않다있어 세션에로드 된 개체 ... 사용자가있을 때Doctrine2 -

그래서, 성공적으로 로그인 페이지로, 나는 세션에 자신의 객체를 넣어 :

Zend_Auth::getInstance()->getStorage()->write($user); 

모든 것이 잘 작동하지만 내가 페이지를 새로 세션에서 사용자를로드 할 때 :

$user = Zend_Auth::getInstance()->getStorage()->read(); 

을 그리고이 $ 사용자와 내가 할 수있는 어떤 Doctr도하지 마라. ine2 작업 : - /. 나는 예를 들어, "getId()"방법을 사용할 수 있어요,하지만 난 어떤 관계에 예를 들어, 사용 $ 사용자에 대한하려고하면

법인 App_Model_Users은 다음과 같습니다

$session = new App_Model_LogSessions(); 
$session->setUser($user); 
... 

을 나는 Doctrine2 예외를 참조 관리되지 않습니다. 엔티티가 데이터베이스에서 가져 오거나 EntityManager를 통해 새 것으로 등록 된 경우 관리됩니다.

어떻게 해결할 수 있습니까? 엔티티를 "다시로드"할 수있는 방법이 있습니까? 나는 세션을 사용해야하는데 모든 페이지 요청에서 데이터베이스에서 사용자를로드하고 싶지 않습니다. 한 번로드하고 세션에 넣고 싶습니다.

감사합니다.

답변

1
세션 (기본적으로 당신이 필요가) 여기에 대한 답변에서

저장 교리 개체 : Doctrine 2: Can entities be saved into sessions?

는이 같은 아주 간단하면서 작업에 배열 힘으로 변환, 그 실체를 사용할 방식에 따라 달라집니다 시각. 엔티티 (지속 등)로 사용할 수 없지만 데이터에 액세스 할 수 있습니다.

0

실제 ID 만 저장하고 캐시를 사용하는 것이 좋습니다. 그러나 문제를 해결하기 위해 항상 엔티티를 다시 연결할 수 있습니다.

// Assume that $em is a instance of the EntityManager 
$attachedObject = $em->merge($object); 
을 (난 - P 어쨌든 그 일을 권장하지 않지만)를 어떻게 할 것입니다