Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AbstractLogEntry - Unknown doctrine type "array" #2883

Open
Kaaly opened this issue Oct 7, 2024 · 6 comments
Open

AbstractLogEntry - Unknown doctrine type "array" #2883

Kaaly opened this issue Oct 7, 2024 · 6 comments

Comments

@Kaaly
Copy link

Kaaly commented Oct 7, 2024

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 : * 3.17.0
released : 2024-10-06, this week
latest   : 3.17.0 released 2024-10-06, this week
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 38b3737997ce58c1187807d18abc49d0f416b4c4
dist     : [zip] https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/38b3737997ce58c1187807d18abc49d0f416b4c4 38b3737997ce58c1187807d18abc49d0f416b4c4
path     : C:\laragon\www\www.tente.local\vendor\gedmo\doctrine-extensions
names    : gedmo/doctrine-extensions

support
email : [email protected]
issues : https://github.com/doctrine-extensions/DoctrineExtensions/issues
source : https://github.com/doctrine-extensions/DoctrineExtensions/tree/3.17.0
wiki : https://github.com/Atlantic18/DoctrineExtensions/tree/main/doc

autoload
psr-4
Gedmo\ => src/

requires
behat/transliterator ^1.2
doctrine/collections ^1.2 || ^2.0
doctrine/common ^2.13 || ^3.0
doctrine/deprecations ^1.0
doctrine/event-manager ^1.2 || ^2.0
doctrine/persistence ^2.2 || ^3.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/dbal ^3.7 || ^4.0
doctrine/doctrine-bundle ^2.3
doctrine/mongodb-odm ^2.3
doctrine/orm ^2.14.0 || ^3.0
friendsofphp/php-cs-fixer ^3.14.0
nesbot/carbon ^2.71 || ^3.0
phpstan/phpstan ^1.11
phpstan/phpstan-doctrine ^1.4
phpstan/phpstan-phpunit ^1.4
phpunit/phpunit ^9.6
rector/rector ^1.1
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/dbal <3.7 || >=5.0
doctrine/mongodb-odm <2.3 || >=3.0
doctrine/orm <2.14.0 || 2.16.0 || 2.16.1 || >=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/doctrine-migrations-bundle 3.3.1  3.3.1  Symfony DoctrineMigrationsBundle

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 different drivers such as redis, memcache, apc, mongodb and others.
doctrine/collections                2.2.2  2.2.2  PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.
doctrine/common                     3.4.4  3.4.4  PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, proxies and much more.
doctrine/dbal                       4.1.1  4.1.1  Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.
doctrine/deprecations               1.1.3  1.1.3  A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.
doctrine/doctrine-bundle            2.13.0 2.13.0 Symfony DoctrineBundle
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 the various Doctrine projects.
doctrine/inflector                  2.0.10 2.0.10 PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.
doctrine/instantiator               2.0.0  2.0.0  A small, lightweight utility to instantiate objects in PHP without invoking their constructors
doctrine/lexer                      3.0.1  3.0.1  PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.
doctrine/migrations                 3.8.1  3.8.1  PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema and easily deploying changes to it. ...
doctrine/orm                        3.2.2  3.2.2  Object-Relational-Mapper for PHP
doctrine/persistence                3.3.3  3.3.3  The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.
doctrine/sql-formatter              1.5.0  1.5.0  a PHP SQL highlighting library

PHP version

$ php -v
PHP 8.3.1 (cli) (built: Dec 20 2023 14:06:10) (ZTS Visual C++ 2019 x64)

Subject

Since v3.17.0 and bump doctrine/dbal to 4.0, i got this error on doctrine :
Unknown column type "array" requested. Any Doctrine type that you use has to be registered with \Doctrine\DBAL\Types\Type::addType(). You can get a list of all the known types with \Doctrine\DBAL\Types\Type::getTypesMap(). If this er ror occurs during database introspection then you might have forgotten to register all database types for a Doctrine Type. Use AbstractPlatform#registerDoctrineTypeMapping() or have your custom types implement Type#getMappedDatabaseT ypes(). If the type name is empty you might have a problem with the cache or forgot some mapping information.

@mbabker
Copy link
Contributor

mbabker commented Oct 7, 2024

The Loggable extension isn't compatible with DBAL 4 right now, see #2502 and #2825 for the progress on that.

If you need the loggable extension, you'll need to stick with DBAL 3 for the time being (I guess you could also try copying the old array type from the DBAL 3 codebase and registering it as a custom type in your application, but that's not a great long term solution, either).

@Kaaly
Copy link
Author

Kaaly commented Oct 7, 2024

Thanks for answer.

I think README need an alert on that.
Official version (no alpha or beta) is published mentionning compability with doctrine/dbal v4 which is not totally true.

I will stick to DBAL 3 then

@phansys
Copy link
Collaborator

phansys commented Oct 7, 2024

I think README need an alert on that.
Official version (no alpha or beta) is published mentionning compability with doctrine/dbal v4 which is not totally true.

I totally agree.
See #2886.

@featuriz
Copy link
Contributor

Only one change is enough. In a single file, AbstractLogEntry @ line 90 :

namespace Gedmo\Loggable\Entity\MappedSuperclass;

abstract class AbstractLogEntry implements LogEntryInterface

// at line 90
/**
     * @var array<string>|null
     */
    #[ORM\Column(type: Types::JSON, nullable: true)]
    protected $data;

@mbabker
Copy link
Contributor

mbabker commented Oct 13, 2024

Changing it from an array type to a JSON type like that works if you have no intention on using the old data in that table. The two field types aren't compatible when they're transformed to a database value by the DBAL (the array type makes a VARCHAR field that stores the result of serialize(), the JSON type makes a JSON column).

@YoannChabert
Copy link

I maked a workaround too by moving the data column to a new column old_data, and adding data in json type. (Just a patch then to update data from old_data)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants