持久关联symfony2

持久关联symfony2,symfony,doctrine-orm,associations,persistence,Symfony,Doctrine Orm,Associations,Persistence,我开始使用Doctrine2和关联,但我不了解所有方面 我有两个php类: class User extends BaseUser { protected $id; protected $team; /** * Get id * * @return integer $id */ public function getId() { return $this->id; } public function setId($id) { $thi

我开始使用Doctrine2和关联,但我不了解所有方面

我有两个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;
}


}

我的问题是,当用户创建新的配置文件时,关联不会被创建

因此,我的用户类中有一个带有PostPersist的函数:

public function addTeam(LifecycleEventArgs $args) { 

    $entity = $args->getEntity(); 
    $em = $args->getEntityManager();

    $player = $this->getTeam();

    $player->setPlayers(array($entity));

    $em->persist($player);
    $em->flush();
}
它可以工作,但只针对一个用户,我的函数在插入查询之前生成一个删除查询

这类问题有解决办法吗


谢谢

您的ORM注释中有一些错误:
$coach
$players
都有一个targetEntity of User和相同的inveredBy属性
inversedBy
应该是用户类的属性,用户类是多对多关联的另一方,例如,
$coachedTeams
$playInTeams

addTeam代码删除了以前的关联,因为您调用了
$player->setPlayers(array($entity))
:它将旧的关联集合替换为新的关联集合。您应该调用$player->addPlayer($entity),将新对象添加到现有集合中

如果使用
php应用程序/控制台原则:generate:entities
生成实体,则不应使用方法
setPlayers()
,而应使用
addPlayer()
removePlayer()


还请注意,与条令的关联存储为
条令\Common\Collections\Collection
而非普通数组。

菜鸟错误抱歉。。。addPlayer功能当然非常有效!我已经修改了注释,并使用了条令\Common\Collections\Collection。谢谢大家
public function addTeam(LifecycleEventArgs $args) { 

    $entity = $args->getEntity(); 
    $em = $args->getEntityManager();

    $player = $this->getTeam();

    $player->setPlayers(array($entity));

    $em->persist($player);
    $em->flush();
}