2017-10-05 200 views
1

我試圖在Team實體中創建新記錄,現有用戶作爲用戶實體的所有者,但使用持久記錄後創建新用戶而不是附加記錄。Symfony 3 ORM在創建新實體記錄後創建新記錄

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:

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

下面是轉儲記錄的樣子:

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,並進行確認,但堅持後它會創建一個新的用戶在數據庫中。

請給出一些很好的建議。

+0

是否有在這之後持續或要求解僱任何事件? – svgrafov

+0

它使用相同的ID在數據庫中創建新用戶? – ArtOsi

回答

0

您需要從實體獲取用戶對象,以便教義可以將您的團隊實體與此用戶關聯,現在您從中獲取用戶對象。我猜安全上下文不是作爲新用戶創建原因的教義對象。

本應爲如下$user = $this->getUser();

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