Skip to content

Conversation

GwendolenLynch
Copy link
Contributor

@GwendolenLynch GwendolenLynch commented Jul 1, 2023

From DBAL 3.2 the events systems is (mostly?) deprecated in favour of middleware, and custom schema manager + factory combination.

The main purpose of this PR is to migrate as much as possible to this:

  • Jsor\Doctrine\PostGIS\Driver\Driver that extends AbstractPostgreSQLDriver
  • Jsor\Doctrine\PostGIS\Driver\Middleware that wraps the lower level Driver inside the PostGIS Driver
  • Jsor\Doctrine\PostGIS\Driver\PostGISPlatform wraps Doctrine\DBAL\Platforms\PostgreSQLPlatform and is instantiated by the PostGIS Driver
  • Jsor\Doctrine\PostGIS\Schema\SchemaManager now extends Doctrine\DBAL\Schema\PostgreSQLSchemaManager and handles schema management
  • Jsor\Doctrine\PostGIS\Schema\SchemaManagerFactory is an implementation of Doctrine\DBAL\Schema\SchemaManagerFactory
    • Creates the SchemaManager instance inside Connection
  • Functionality from Jsor\Doctrine\PostGIS\Event\DBALSchemaEventSubscriber moved to PostGISPlatform

Additionally:

  • Updated docs
  • Added @covers on most tests to get a better view of coverage
  • Updated tests and all pass
  • Updated psalm.xml and it passes

Bonus: It is now possible to extend Jsor\Doctrine\PostGIS\Types\GeographyType or Jsor\Doctrine\PostGIS\Types\GeometryType and not have the schema tool throw a tantrum. See PostGISPlatformTest

Feedback welcome, and I'm happy to add/adjust/drop relevant things.

Edit: Fixes #63

@thePanz
Copy link

thePanz commented Feb 20, 2024

@jsor we have been using this fork with no issues for a while now, any progress/help-needed here?

Repository owner deleted a comment from vazw Mar 4, 2024
@GwendolenLynch GwendolenLynch force-pushed the dbal-deprecations branch 3 times, most recently from 9866728 to 1b766d0 Compare March 5, 2024 13:56
@GwendolenLynch GwendolenLynch force-pushed the dbal-deprecations branch 2 times, most recently from 2bc5745 to 07e9d7a Compare March 7, 2024 16:08
@GwendolenLynch
Copy link
Contributor Author

This latest update should take care of the remaining deprecations to support DBAL v4 (and silence PHPUnit).

Tests are passing locally.

@GwendolenLynch GwendolenLynch changed the title DBAL Middleware, Driver, Platform, and SchemaManager implementation DBAL v4, Middleware, Driver, Platform, and SchemaManager implementation Mar 7, 2024
@wesnick
Copy link

wesnick commented Mar 21, 2024

👍 This branch works for me, I was able to upgrade an existing symfony project to DBAL 4, ORM 3. Thanks!

@tasselchof
Copy link

@GwendolenLynch in the documentation you write:

Additionally, to also use the library with the Doctrine ORM, register the ORMSchemaEventListener event subscriber.

use Jsor\Doctrine\PostGIS\Event\ORMSchemaEventListener;

$entityManager->getEventManager()->addEventSubscriber(new ORMSchemaEventSubscriber());

In the example you register ORMSchemaEventSubscriber, if someone just copies it it will fail.

@tasselchof
Copy link

Also, I am getting this when I am adding ORM subscriber:

PHP Fatal error:  Uncaught Roave\PsrContainerDoctrine\Exception\DomainException: Invalid event subscriber "Jsor\Doctrine\PostGIS\Event\ORMSchemaEventListener" given, must be a dependency name, class name or an instance implementing Doctrine\Common\EventSubscriber in /../vendor/roave/psr-container-doctrine/src/Exception/DomainException.php:36

@GwendolenLynch
Copy link
Contributor Author

Thanks for your feedback, @tasselchof. I'm going to try to add some more tests to cover this.

What versions of doctrine/orm, doctrine/dbal, and doctrine/common are you using?

@tasselchof
Copy link

Thanks for your feedback, @tasselchof. I'm going to try to add some more tests to cover this.

What versions of doctrine/orm, doctrine/dbal, and doctrine/common are you using?

I've made a pull request to your branch with those fixes: GwendolenLynch#1. You can merge it to fix those and if I will find anything else - I will do another pull request. It's just one test if you wish to add it.

[app]$ composer show doctrine/*
doctrine/annotations   2.0.1  Docblock Annotations Parser
doctrine/collections   2.2.2  PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.
doctrine/common        3.4.4  PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection sup...
doctrine/data-fixtures 1.7.0  Data Fixtures for all Doctrine Object Managers
doctrine/dbal          4.0.1  Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.
doctrine/deprecations  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/event-manager 2.0.0  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 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  A small, lightweight utility to instantiate objects in PHP without invoking their constructors
doctrine/lexer         3.0.1  PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.
doctrine/migrations    3.7.4  PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema a...
doctrine/orm           3.1.2  Object-Relational-Mapper for PHP
doctrine/persistence   3.3.2  The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.

@scripness
Copy link

Hey guys! Are there any plans on merging this or should we rollback to DBAL v3?

Copy link
Collaborator

@maxhelias maxhelias left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A CHANGELOG.md or UPGRADE.md would be welcome to list the new classes and especially the BC of deleted or renamed class.

@GErpeldinger
Copy link

Hello everyone, any news on this MR ? Are the changelog is the only thing missing for merging it ?

@imbertjules
Copy link

imbertjules commented Nov 19, 2024

Hello everyone,
is there any news???
do you plan to merge??
@jsor @thePanz @GwendolenLynch @wesnick @tasselchof
do you need any help?

@SimonCVenex
Copy link

The current @jsor version of this repo doesn't work for me using current versions of Symfony and Doctrine, but this patch does work, so I have forked @GwendolenLynch's repo and I'm using that until the official version is updated.

Please consider merging this PR and releasing a new version @jsor . :)

@ddegasperi
Copy link

ddegasperi commented Jul 10, 2025

Hi,
I'm currently using the changes from this PR in my own project, and they’ve been working well.

I was wondering what’s still missing to get this merged. Is there anything I can help with to move it forward?
Happy to assist if something’s still needed 😊

Many thanks for the work done so far!

EDIT: @GwendolenLynch maybe the only thing I would change is to remove final keyword from PostGISPlatform as it takes away the possibility to extend the platform with custom behavior

@jsor
Copy link
Owner

jsor commented Sep 25, 2025

@GwendolenLynch Hey, sorry for being unresponsive for so long. I've added you as an collaborator to this repo. So, feel free to merge and release this and also #67.

@MathisBurger
Copy link
Collaborator

@GwendolenLynch please take a look at your formatting and the psalm checks

@maxhelias
Copy link
Collaborator

@GwendolenLynch @MathisBurger I corrected the CI and reworked the functioning of the spatial index filter.

@MathisBurger
Copy link
Collaborator

lgtm, what do you think @GwendolenLynch ?

@maxhelias maxhelias force-pushed the dbal-deprecations branch 2 times, most recently from 6aec76f to e832080 Compare October 7, 2025 23:06
@maxhelias maxhelias merged commit fbd92eb into jsor:main Oct 8, 2025
2 checks passed
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

Successfully merging this pull request may close these issues.

Plan for using TokenType constants instead of Doctrine\ORM\Query\TokenType\Lexer ? Doctrine deprecation