2013-01-22 3 views
0

하나의 컨트롤러에서 삽입/업데이트를 해결하고 싶습니다. 이건 내 코드입니다 : (if(!$check) 사실 켠 후) 지금은Symfony2 및 업데이트 항목

public function setOwnershipAction(Request $request) { 
    $session = $this->get('security.context')->getToken()->getUser(); 

    $em = $this->getDoctrine()->getManager(); 

    $game = $em->getRepository('GameShelfGamesBundle:Game')->find($request->request->get('hash')); 
    $user = $em->getRepository('GameShelfUsersBundle:User')->find($session->getId()); 
    $typo = $em->getRepository('GameShelfUsersBundle:OwnState')->find($request->request->get('setownstate')['id']); 
    $plat = $em->getRepository('GameShelfGamesBundle:Platforms')->find($request->request->get('platformown')['id']); 

    $check = $em->getRepository('GameShelfUsersBundle:Own')->findBy(array(
     'user' => $user, 
     'game' => $game 
    )); 

    if(!$check) { 
     $own = new Own; 
     $own->setGame($game); 
     $own->setUser($user); 
     $own->setTypo($typo); 
     $own->setPlatforms($plat); 
     $own->setUpdated(date("Y-m-d H:i:s")); 
     $em->persist($own); 
     $em->flush(); 
    } else { 
     $check->setTypo($typo); 
     $em->flush(); 
    } 
} 

삽입, 작동하지만 else 후에는 클릭하지 않습니다. 내 오류는 Fatal error: Call to a member function setTypo() on a non-object입니다.

+1

findBy는 배열을 반환합니다. 하나의 객체 만 사용하려는 경우 : findOneBy – Cyprian

답변

3

findBy() 메서드는 배열을 반환합니다. findOneBy()을 사용하거나 findBy() 결과를 반복해야합니다.

관련 문제