我有这个抽象父类,但有一些限制。
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吗?