ORM HasLifecycleCallbacks不适用于抽象父类

时间:2018-09-12 11:36:58

标签: php symfony doctrine-orm orm doctrine

我有这个抽象父类,但有一些限制。

namespace FileBundle\AbstractClass;

use Symfony\Component\HttpFoundation\File\UploadedFile;
use FileBundle\Interfaces\IFileOid;
use FileBundle\Traits\TFileOid;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\MappedSuperclass()
 * @ORM\HasLifecycleCallbacks()
 */
abstract class AbstractFileOid implements IFileOid
{
    /**
     * Set trait
     */
    use TFileOid;

    /**
     * @param UploadedFile|null $fileTemp
     *
     * @return void
     */
    abstract public function init(UploadedFile $fileTemp = null);

    // and some next code here
}

如您所见,我在那里使用了一个名为“ TFileOid”的特征,其中包含一些使用orm生命周期事件的方法,例如PostLoad(),PostPersist()等。

还有扩展抽象父级的子类(实体):

namespace FileBundle\Entity;

use Symfony\Component\HttpFoundation\File\UploadedFile;
use FileBundle\AbstractClass\AbstractFileOid;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity()
 * @ORM\Table("files")
 */
class MyFile extends AbstractFileOid
{
    /**
     * @var string
     * @ORM\Id
     * @ORM\Column(type="string", length=40)
     */
    private $hash;

    /**
     * @ORM\Column(type = "oid", nullable = true)
     */
    private $data;

    // and some next code
}

我的问题是,当我在父抽象类上使用ORM \ HasLifecycleCallbacks时,不会调用trait中的事件方法。当我将ORM \ HasLifecycleCallbacks移到子类时,它将起作用。我尝试在父级上使用“ MappedSuperclass”定义的解决方案,但没有成功。

有什么方法可以在父类而不是子类上定义ORM \ HasLifecycleCallbacks吗?

0 个答案:

没有答案