我想用symfony2和doctrine2存储历史数据。例如我有 2 个实体:
class Shop
{
private $id;
private $url;
private $version;
}
第二个实体:
class Version
{
private $id;
private $software;
private $version;
}
版本实体存储特定的商店版本,例如 Magento 1.2
或 OXID eShop 4.7
- 因此版本实体的条目应该是可重用的。
每次 Shop
的版本发生更改时,我都想存储此更改以获取版本更改的历史 View 。
我如何使用 symfony2 和doctrine2 做到这一点?我尝试过多对多映射,但我无法找出使用正确映射的正确方法。
感谢您的帮助!
最佳答案
为了使其发挥作用,您必须正确设置一些内容。
首先,您需要告诉 Doctrine $versions
与 Version
相关:
class Shop
{
private $id;
private $url;
/**
* @ORM\ManyToMany(targetEntity="Version", cascade={"persist"})
* @ORM\JoinTable(name="shop_version",
* joinColumns={@ORM\JoinColumn(name="shop_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="version_id", referencedColumnName="id")}
* )
*/
private $versions;
}
由于它是一个 ManyToMany
关系 ( documentation ),$versions
将被 Symfony 视为 ArrayCollection
。因此,您需要创建方法来相应地处理它。
构造函数
public function __construct()
{
$this->versions = new ArrayCollection();
}
setter/getter
public function getVersions()
{
return $this->versions;
}
加法器
public function addVersion(Version $version)
{
$this->versions[] = $version;
}
去除剂
public function removeVersion(Version $version)
{
$this->versions->removeElement($version);
}
就是这样。不要忘记为 ArrayCollection
添加 use
语句!
use Doctrine\Common\Collections\ArrayCollection;
关于symfony - 如何用symfony和ismy来存储历史数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25695473/