ORM HasLifecycleCallbacks не работает с абстрактным родительским классом - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть этот абстрактный родительский класс с некоторыми ограничениями.

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 в родительском абстрактном классе, методы события в признаке не будут вызываться. Когда я перемещу ORM \ HasLifecycleCallbacks в дочерний класс, он будет работать. Я попытался найти решение с определением «MappedSuperclass» на родительском элементе, но безуспешно.

Есть ли способ определить ORM \ HasLifecycleCallbacks на родительском, а не на дочернем классе?

...