【发布时间】:2018-03-17 11:54:22
【问题描述】:
我正在尝试在团队实体中创建一个新记录,现有用户作为用户实体的所有者,但在使用持久化之后,它会创建一个新用户,而不是将其附加到记录中。
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 ▶}
}
您可以在persist之前看到用户具有ID并被识别,但在persist之后它会在数据库中创建一个新用户。
请多多指教。
【问题讨论】:
-
在这个持久化或请求之后是否触发了任何事件?
-
它在数据库中创建具有相同 id 的新用户?
标签: php symfony orm doctrine persist