我有一个直截了当的问题,但由于它与 Doctrine 2 和 Zend Forms 捆绑在一起,所以在这里尝试一下以获得专家的支持。
让我从我的实体 Team Entity 开始:
/**
*
* @ORM\Entity
* @ORM\Table(name="team")
* @property string $teamName
* @property int $teamId
*/
class Team
{
/**
* @ORM\Id
* @ORM\Column(type="integer", name="teamId", unique=true);
*/
protected $teamId;
/**
* @ORM\Column(type="string")
*/
protected $teamName;
/**
* @ORM\OneToMany(targetEntity="TeamPlayers", mappedBy="team", cascade={"persist"})
*/
protected $player;
/**
* Magic getter to expose protected properties.
*
* @param string $property
* @return mixed
*/
public function __get($property)
{
return $this->$property;
}
/**
* Magic setter to save protected properties.
*
* @param string $property
* @param mixed $value
*/
public function __set($property, $value)
{
$this->$property = $value;
}
}
玩家实体:
/**
*
* @ORM\Entity
* @ORM\Table(name="player")
* @property string $playerName
* @property int $playerId
*/
class Player
{
/**
* @ORM\Id
* @ORM\Column(type="integer", name="playerId", unique=true);
*/
protected $playerId;
/**
* @ORM\Column(type="string")
*/
protected $playerName;
/**
* @ORM\OneToMany(targetEntity="TeamPlayers", mappedBy="player", cascade={"persist"})
*/
protected $team;
/**
* Magic getter to expose protected properties.
*
* @param string $property
* @return mixed
*/
public function __get($property)
{
return $this->$property;
}
/**
* Magic setter to save protected properties.
*
* @param string $property
* @param mixed $value
*/
public function __set($property, $value)
{
$this->$property = $value;
}
}
TeamPlayer 实体:
/**
*
* @ORM\Entity
* @ORM\Table(name="teamplayer")
* @property int $teamId
* @property int $playerId
*/
class TeamPlayer
{
/**
* @ORM\Id
* @Column(type="integer")
*/
protected $playerId;
/**
* @ORM\Id
* @Column(type="integer")
*/
protected $teamId;
/**
* @ORM\ManyToOne(targetEntity="Team", inversedBy="player", cascade={"persist"})
*/
protected $team;
/**
* @ORM\ManyToOne(targetEntity="Player", inversedBy="team", cascade={"persist"})
*/
protected $player;
/**
* Set player
*
* @param \Entity\Player $player
*/
public function setPlayer(\Entity\Player $player)
{
$this->player = $player;
}
/**
* Get player
*
* @return \Entity\Player
*/
public function getPlayer()
{
return $this->player;
}
/**
* Set team
*
* @param \Entity\Team $team
*/
public function setTeam(\Entity\Team $team)
{
$this->team = $team;
}
/**
* Get team
*
* @return \Entity\Team
*/
public function getTeam()
{
return $this->team;
}
}
?>
所以我现在有了 Zend Forms,最初一个用于添加球员,另一个用于添加团队,用户可以在其中添加具有团队名称和团队 ID 的团队,最后他可以为特定团队选择球员,即一个团队可以有很多玩家。因此,用户可以在添加到团队之前在表单中选择多个玩家。
我的问题是,在 addAction() 中的控制器中添加具有选定球员的球队时,我该如何处理这些关系映射,我是否需要添加更多方法来更新 teamplayer 表。如果有人解释如何在控制器中进行操作,对于像我这样越来越多地进入 Zend 和 Doctrine 的人来说会非常有帮助。
编辑
*Player Table:*
playerId -- int -- PK, AI -- Unique
playerName -- varchar -- Unique
*Team Table:*
teamId -- int -- PK -- Unique
teamName -- varchar -- Unique
*TeamPlayer Table:*
playerId -- int -- PK, FK -- references player.playerId
teamId -- int -- PK, FK -- references team.teamId
PS 我知道如何为单个表保存对象或使用 Doctrine 中的连接获取数据,但我不知道如何使用表之间的这种关系保存实体。因此,请将此视为学习者的问题。