Skip to content

Loggable with Mongodb fails to save the date values in LogEntry #3028

@vkost

Description

@vkost

Environment

Docker container running PHP 8.3.21

Package

show

$ composer show --latest gedmo/doctrine-extensions
name     : gedmo/doctrine-extensions
descrip. : Doctrine behavioral extensions
keywords : Blameable, behaviors, doctrine, extensions, gedmo, loggable, nestedset, odm, orm, sluggable, sortable, timestampable, translatable, tree, uploadable
versions : * v3.20.0
released : 2025-04-04, 9 months ago
latest   : v3.22.0 released 2025-12-13, 3 weeks ago
type     : library
license  : MIT License (MIT) (OSI approved) https://spdx.org/licenses/MIT.html#licenseText
homepage : http://gediminasm.org/
source   : [git] https://github.com/doctrine-extensions/DoctrineExtensions.git ea1d37586b8e4bae2a815feb38b177894b12c44c
dist     : [zip] https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/ea1d37586b8e4bae2a815feb38b177894b12c44c ea1d37586b8e4bae2a815feb38b177894b12c44c
path     : /app/vendor/gedmo/doctrine-extensions
names    : gedmo/doctrine-extensions

support
docs : https://github.com/doctrine-extensions/DoctrineExtensions/tree/main/doc
issues : https://github.com/doctrine-extensions/DoctrineExtensions/issues
source : https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.20.0

autoload
psr-4
Gedmo\ => src/

requires
behat/transliterator ^1.2
doctrine/collections ^1.2 || ^2.0
doctrine/deprecations ^1.0
doctrine/event-manager ^1.2 || ^2.0
doctrine/persistence ^2.2 || ^3.0 || ^4.0
php ^7.4 || ^8.0
psr/cache ^1 || ^2 || ^3
psr/clock ^1
symfony/cache ^5.4 || ^6.0 || ^7.0

requires (dev)
doctrine/annotations ^1.13 || ^2.0
doctrine/cache ^1.11 || ^2.0
doctrine/common ^2.13 || ^3.0
doctrine/dbal ^3.7 || ^4.0
doctrine/doctrine-bundle ^2.3
doctrine/mongodb-odm ^2.3
doctrine/orm ^2.20 || ^3.3
friendsofphp/php-cs-fixer ^3.70
nesbot/carbon ^2.71 || ^3.0
phpstan/phpstan ^2.1.1
phpstan/phpstan-doctrine ^2.0.1
phpstan/phpstan-phpunit ^2.0.3
phpunit/phpunit ^9.6
rector/rector ^2.0.6
symfony/console ^5.4 || ^6.0 || ^7.0
symfony/doctrine-bridge ^5.4 || ^6.0 || ^7.0
symfony/phpunit-bridge ^6.0 || ^7.0
symfony/uid ^5.4 || ^6.0 || ^7.0
symfony/yaml ^5.4 || ^6.0 || ^7.0

suggests
doctrine/mongodb-odm to use the extensions with the MongoDB ODM
doctrine/orm to use the extensions with the ORM

conflicts
doctrine/annotations <1.13 || >=3.0
doctrine/common <2.13 || >=4.0
doctrine/dbal <3.7 || >=5.0
doctrine/mongodb-odm <2.3 || >=3.0
doctrine/orm <2.20 || >=3.0 <3.3 || >=4.0

Doctrine packages

show

$ composer show --latest 'doctrine/*'
Color legend:
- patch or minor release available - update recommended
- major release available - update possible
- up to date version

Direct dependencies required in composer.json:
doctrine/dbal                       3.9.4  4.4.1  Powerful PHP database abstraction layer (DBAL) with many features for database schema ...
doctrine/doctrine-bundle            2.14.0 2.18.2 Symfony DoctrineBundle
doctrine/doctrine-fixtures-bundle   4.1.0  4.3.1  Symfony DoctrineFixturesBundle
doctrine/doctrine-migrations-bundle 3.4.2  3.7.0  Symfony DoctrineMigrationsBundle
doctrine/mongodb-odm-bundle         5.3.1  5.5.1  Symfony Doctrine MongoDB Bundle
doctrine/orm                        3.3.3  3.6.0  Object-Relational-Mapper for PHP

Transitive dependencies not required in composer.json:
doctrine/cache                      2.2.0  2.2.0  PHP Doctrine Cache library is a popular cache implementation that supports many differ...
Package doctrine/cache is abandoned, you should avoid using it. No replacement was suggested.
doctrine/collections                2.3.0  2.4.0  PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.
doctrine/data-fixtures              2.0.2  2.2.0  Data Fixtures for all Doctrine Object Managers
doctrine/deprecations               1.1.5  1.1.5  A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options...
doctrine/event-manager              2.0.1  2.0.1  The Doctrine Event Manager is a simple PHP event system that was built to be used with...
doctrine/inflector                  2.0.10 2.1.0  PHP Doctrine Inflector is a small library that can perform string manipulations with r...
doctrine/instantiator               2.0.0  2.0.0  A small, lightweight utility to instantiate objects in PHP without invoking their cons...
doctrine/lexer                      3.0.1  3.0.1  PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Pars...
doctrine/migrations                 3.9.0  3.9.5  PHP Doctrine Migrations project offer additional functionality on top of the database ...
doctrine/mongodb-odm                2.11.2 2.15.3 PHP Doctrine MongoDB Object Document Mapper (ODM) provides transparent persistence for...
doctrine/persistence                4.0.0  4.1.1  The Doctrine Persistence project is a set of shared interfaces and functionality that ...
doctrine/sql-formatter              1.5.2  1.5.3  a PHP SQL highlighting library

PHP version

$ php -v
PHP 8.3.21 (cli) (built: May 21 2025 23:17:25) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.21, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.21, Copyright (c), by Zend Technologies
    with Xdebug v3.4.5, Copyright (c) 2002-2025, by Derick Rethans

Subject

I have a number of Documents with DateTime values. Normally, the updates to these DateTime fields were recorded in the LogEntry $data field. At some point, this broke (I can't be exactly sure when). The datetime fields are displaying as

date: {}

For reference, old entries look like this:

date: {"date": "2015-08-19 00:00:00", "timezone_type": new NumberInt("3"), "timezone": "America/New_York" }

I tried to debug the issue, but failed to find the problem. The change in the Document is detected, and the DateTime field is visible in the LogEntry at the moment of persisting it. It looks as if the HASH field is not able to store these values any more. Everything else is working just fine - but the dates are missing from all entries, as explained before.

Minimal repository with the bug

Steps to reproduce

Use any Document class with a \DateTime field. Create a record using standard commands (persist, flush). Check the LogEntry collection - you should see a create entry for the item. Check the $data field. The date is not displaying correctly.

Expected results

Date being stored as
date: {"date": "2015-08-19 00:00:00", "timezone_type": new NumberInt("3"), "timezone": "America/New_York" }

Actual results

Date being stored as
date: {}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions