symfony - 如何用symfony和ismy来存储历史数据?

标签 symfony doctrine-orm doctrine

我想用symfony2和doctrine2存储历史数据。例如我有 2 个实体:

class Shop
{
     private $id;
     private $url;
     private $version;
}

第二个实体:

class Version
{
     private $id;
     private $software;
     private $version;
}

版本实体存储特定的商店版本,例如 Magento 1.2OXID eShop 4.7 - 因此版本实体的条目应该是可重用的。

每次 Shop 的版本发生更改时,我都想存储此更改以获取版本更改的历史 View 。

我如何使用 symfony2 和doctrine2 做到这一点?我尝试过多对多映射,但我无法找出使用正确映射的正确方法。

感谢您的帮助!

最佳答案

为了使其发挥作用,您必须正确设置一些内容。

首先,您需要告诉 Doctrine $versionsVersion 相关:

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/

相关文章:

symfony - tinymce 4 和 file_browser_callback

symfony - Symfony 4和Nelmio CORS软件包的CORS错误

php - SQLSTATE[HY000] : General error: 1025 Error on rename error when dropping foreign key in Doctrine Migration

mysql - Symfony2 - 连接错误中的子查询

symfony - Doctrine 查询生成器 LOWER 不起作用

php - APC 和 Symfony 2.1 的 app.php 应该是什么样子

php - 获取 Symfony2 上所有听众的列表

symfony - 作为依赖项的 Sylius 产品包

php - Doctrine 2.1 : memory usage increased after flush