Symfony固定装置 - 是否可以“假”'创建日期?

时间:2016-09-23 14:38:31

标签: doctrine-orm symfony fixtures

我正在尝试创建依赖于其他实体createDT标记的灯具。但是,我无法欺骗'这些因为我使用@prepersist来填充我的实体中的createDT字段。我有很多涉及的实体,我想知道是否有任何方法可以暂时冻结/覆盖此@prepersist只是为了加载我的灯具?

我的实体都有:

/**
 * Set createDT
 * @ORM\PrePersist
 */
public function setCreateDT()
{
    $this->createDT = new \DateTime();
    return $this;
}

...我试图有条件地指定灯具'以下类型的值,与另一个实体的createDT进行比较:

class LoadTransactionData extends AbstractFixture implements OrderedFixtureInterface {
    public function load(ObjectManager $manager) {
        for ($month=1; $month <= 120; $month++) {
            $transaction = new Transaction();
            $date = new \DateTime();

            if($date->setDate(2000 + floor($month/12),$month % 12,1) < $this->getReference('AC_1')->getCreateDT()) {
                // ...get references etc and do stuff here....
            } else {
                // ...get references etc and do other stuff here...
            }
            $manager->persist($transaction);
        }
        $manager->flush();
    }

更新:上述情况会是最好的,但如果不可能的话,如果有办法延迟某些记录的持续存在,也许就足够了?这样,我至少可以制作一两秒的时间差来进行比较

1 个答案:

答案 0 :(得分:0)

一个解决方案可以在构造函数方法中指定日期:

public function __construct()
{
    $this->createDT = new \DateTime();
}

因此,当你的灯具加载时,这个日期会被覆盖。