2017-10-05 26 views
1

사용자 엔티티의 소유자로 기존 사용자를 팀 엔티티에 새 레코드를 만들려고 시도하지만 persist를 사용하면 레코드를 첨부하지 않고 새 사용자를 만듭니다.Symfony 3 ORM이 persist 된 후 새로운 엔티티 레코드를 생성합니다.

public function createTeam(Request $request) 
    { 
     $teamForm = $this->createForm(TeamType::class); 

     $teamForm->handleRequest($request); 
     if ($teamForm->isSubmitted() && $teamForm->isValid()) { 

      $user = $this->getUser(); 
      $team = $teamForm->getData(); 

      $team->setCreatedAt(new \DateTime()) 
       ->setCreator($user); 

      $this->em->persist($team); 
    //dd($team); 
      $this->em->flush(); 

     } 

ORM : 당신이 사용자를 볼 수 있습니다 전에 지속

TeamController.php on line 52: 
Team {#591 ▼ 
    -id: null 
    -creator: SteamUser {#238 ▼ 
    -id: 1 
    -roles: array:1 [▶] 
    -nickName: "steamuser" 
    -userName: "76561192288153971" 
    -password: "LrC8fFLuIdPqAiDHDATiheRaIBk=" 
    -avatar: "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/9e/9e8567cc32383f28df41da7fbca7e8afd47f8516.jpg" 
    -teams: PersistentCollection {#290 ▶} 
    } 
    -name: "dasdasdasdas" 
    -logo: null 
    -teamType: 2 
    -createdAt: DateTime {#594 ▶} 
    -roster: ArrayCollection {#571 ▶} 
} 

ID가 인정 되나 지속 후에는 새를 만듭니다

여기
 /** 
    * @ORM\ManyToOne(targetEntity="AppBundle\Entity\SteamUser", cascade={"persist"}) 
    * @ORM\JoinColumn(name="steam_user_id", referencedColumnName="id", onDelete="SET NULL") 
    */ 
    private $creator; 

는 기록이 어떻게 생겼는지 덤프입니다 데이터베이스에있는 사용자.

몇 가지 좋은 조언을주십시오.

+0

다음과 같이 변경해야합니다? – svgrafov

+0

동일한 ID를 가진 데이터베이스에 새로운 사용자를 생성합니까? – ArtOsi

답변

0

Doctrine이 팀 엔티티를이 사용자와 관련시킬 수 있도록 엔티티에서 사용자 개체를 가져와야합니다. 지금은 새로운 사용자가 만들어진 교리 객체가 아닌 보안 컨텍스트를 추측하고있는 사용자 개체를 얻고 있습니다.

이 지속 또는 요청 후 발사 어떤 이벤트가 $user = $this->getUser();

$user = $em->getRepository('AppBundle\Entity\SteamUser') 
      ->find($this->getUser()->getId());