Нарушение ограничения целостности Doctrine Loggable: 1048 Столбец 'object_id' не может быть пустым при сохранении новой сущности - PullRequest
0 голосов
/ 01 октября 2018

Проблема с расширением журнала gedmo доктрины и расширением доктрины

config / doctrine / Tag.orm.xml

<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
               https://raw.github.com/doctrine/doctrine2/master/doctrine-mapping.xsd"
    xmlns:gedmo="http://gediminasm.org/schemas/orm/doctrine-extensions-mapping"
>
<entity name="App\Entity\Tag" table="tag">
    <id name="id" type="integer" column="id">
        <generator strategy="AUTO"/>
    </id>
    <field name="tag" type="string" length="50" unique="true" />
    <field name="text" type="string" length="2000" nullable="true">
        <gedmo:versioned/>
    </field>
    <gedmo:loggable log-entry-class="App\Entity\LogEntry"/>
</entity>

config / packages / stof_doctrineextensions.yaml

  stof_doctrine_extensions:
      default_locale: en_US
      orm:
          default:
              loggable: true

Это работает (Обновление)

    $tag = $em->getRepository(Tag::class)->findOneBy(['tag'=>'test']);
    $tag->setTag('test update');
    $tag->setText('test text');
    $em->flush();

Это не (Сохраняется)

    $tag = new Tag();
    $tag->setTag('test');
    $tag->setText('test text');
    $em->persist($tag);
    $em->flush();

    **Throws below exception**

    An exception occurred while executing 'INSERT INTO log_entry (action, logged_at, object_id, 
    object_class, version, data, username, comment, created_by_id, updated_by_id) VALUES (?, ?, ?, 
    ?, ?, ?, ?, ?, ?, ?)' with params ["create", "2018-10-01 17:22:28", null, "App\\Entity\\Tag", 1, "a:1:
    {s:4:\"text\";N;}", null, null, null, null]:

    SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'object_id' cannot be null

Его очевидный регистрируемый слушатель не может получить доступ к новому идентификатору объекта или пытается сохранить запись в журнале перед сохранением исходного объекта.Я пробовал отладку, похоже, что LoggableListener postPersist метод никогда не вызывается при сохранении, но работает при обновлении.

...