如何在Doctrine中持久保存其他实体?

时间:2015-06-01 09:00:25

标签: symfony orm doctrine-orm doctrine

我有一个Place实体和一个Distance实体,如下所示:

class Place
{
    /** @ORM\Id @ORM\Column(type="integer") @ORM\GeneratedValue(strategy="AUTO") */
    private $id;

    /** @ORM\Column(type="string", length=62, nullable=false) */
    private $name;

    /** @ORM\OneToMany(targetEntity="Distance", mappedBy="origin") */
    protected $distancesTo;

    /** @ORM\OneToMany(targetEntity="Distance", mappedBy="destination") */
    protected $distancesFrom;
}

class Distance
{
    /** @ORM\Id @ORM\Column(type="integer") @ORM\GeneratedValue(strategy="AUTO") */
    private $id;

    /** @ORM\ManyToOne(targetEntity="Place", inversedBy="distancesTo") */
    protected $origin;

    /** @ORM\ManyToOne(targetEntity="Place", inversedBy="distancesFrom") */
    protected $destination;

    /** @ORM\Column(type="integer") */
    private $miles;
}

我希望每次保存新的Distance(从Place_A到Place_B)时,反向距离(从Place_B到Place_A)也会插入到数据库中。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

您需要创建侦听器并侦听Distance实体上的持久性。虽然它仍然存在,但您可以使用反向路径创建新的Distance