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 для родительского, а не для дочернего класса?

убрать скобки с @ORM\MappedSuperclass() и @ORM\HasLifecycleCallbacks()

Cid 12.09.2018 13:54

Скобку убрал, но все равно не работает

AtT0mX 12.09.2018 14:08

Даже после очистки кеша?

Cid 12.09.2018 14:11

да. Кеш Symfony очищен, а кеш доктрины очищен APCu. Все еще не работает.

AtT0mX 12.09.2018 14:24

Вы используете HasLifecycleCallbacks для ребенка?

Cid 12.09.2018 14:43

Нет. Я использую только ORM \ Entity () и ORM \ Table («файлы») в дочернем классе.

AtT0mX 12.09.2018 15:32

Скобки не влияют на аннотации

diegowc 13.09.2018 14:04
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
7
236
0

Другие вопросы по теме