我开始使用 Doctrine2 和关联,但我并不了解所有方面。
我有 2 个 php 类:
class User extends BaseUser
{     
    protected $id;
    protected $team;
/**
 * Get id
 *
 * @return integer $id
 */
public function getId()
{
    return $this->id;
}
public function setId($id) {
    $this->id = $id;
}
public function getTeam() {
    return $this->team;
}
public function setTeam($team) {
    $this->team = $team;
}
}
和
/**
 * Team
 *
 * @ORM\Table(name="basket__team")
 * @ORM\Entity(repositoryClass="Tperroin\BasketBundle\Entity\TeamRepository")
 */
class Team
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;
/**
 * @var string
 *
 * @ORM\Column(name="categorie", type="string", length=255)
 */
private $categorie;
/**
 * @var string
 *
 * @ORM\ManyToMany(targetEntity="Application\Sonata\UserBundle\Entity\User", inversedBy="users", cascade={"persist"})
 * @ORM\JoinTable(name="basket__team_user_coach")
 */
private $coachs;
/**
 * @var string
 *
 * @ORM\ManyToMany(targetEntity="Application\Sonata\UserBundle\Entity\User", inversedBy="users", cascade={"persist"})
 * @ORM\JoinTable(name="basket__team_user_player")
 */
private $players;
/**
 * @var string
 *
 * @ORM\Column(name="level", type="string", length=255)
 */
private $level;
我的问题是,当用户创建新配置文件时,不会创建关联。
所以我在我的 User 类中有这个函数和 PostPersist:
public function addTeam(LifecycleEventArgs $args) { 
    $entity = $args->getEntity(); 
    $em = $args->getEntityManager();
    $player = $this->getTeam();
    $player->setPlayers(array($entity));
    $em->persist($player);
    $em->flush();
}
它有效,但仅适用于一个用户,我的函数在插入之前生成一个删除查询。
有解决此类问题的方法吗?
谢谢