php - ORM HasLifecycleCallbacks 不适用于抽象父类
问题描述
我有这个带有一些限制的抽象父类。
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 ?
解决方案
推荐阅读
- javascript - Regex, Replace brackets between two substrings
- asp.net-core - Asp.Net MVC 核心 3.0 持久化
- javascript - JS 从纯 json 创建图形类型 json
- java - 如何使 JDBC 进行的查询显示在 postgres 日志中?
- vba - 使用 Outlook VBA 保存附件时出现错误 438
- postgresql - database/sql Exec() function fail with concatenating string
- python - How to make tkinter slideshow scale images to fit on screen?
- java - 将 .hprof 文件中的对象加载回 Java 程序
- angular - 赛普拉斯生产包中的 Angular ng 对象
- clojurescript - 在子组件中订阅,而不是将 atom 作为参数传递。(试剂/重新构架)