У меня есть этот абстрактный родительский класс с некоторыми ограничениями.
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 на родительском, а не на дочернем классе?