propel/propel
Propel2 is an open-source Object-Relational Mapping (ORM) for PHP.
2.0.1
5.7M downloads/mo
#2550 most downloaded on Packagist
propelorm/Propel2
What this package is like to depend on
Last release 2 days ago
21 Aug 2026
Release timing varies
gaps range from 2 weeks to 2.3 years
Nearly every release is documented
notes for 2 of 2 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
18 releases · first in 2013
2 releases in the last 12 months
see the full history below
Release timeline
18 releases · Jun 2013 to Aug 2026Releases
latest 18-
2.0.121 Aug 2026Release notes
Open source →What's Changed
- FRW-11837 Added PHP 8.5 Support by @olhalivitchuk in #2073
Full Changelog: 2.0.0...2.0.1
-
2.0.023 Jun 2026Release notes
Open source →What's Changed
- Allow to use non-primary columns in crossref tables by @vol4onok in #1994
- allow to use non-primary columns in crossref tables by @kasparsj in #1559
- Added test case by @vol4onok in #1997
- Drop support for symfony 4.x by @pableu in #1996
- Update LICENSE by @PhilinTv in #2008
- Fix php8.2 deprecation - Use of "parent" in callables is deprecated by @ldaspt in #2015
- Log the full error message at once by @Nidhognit in #2032
- ci: fix deprecation messages by @smhg in #2024
- test:mysql fix test setup by @smhg in #2021
- phpstan: fix deprecation warning by @smhg in #2023
- Use updated calls of GH actions api by @PhilinTv in #2034
- Fixed
Profiler::slowThresholdsetter method to accept float value. by @matweew in #2027 - fix CI badge by @smhg in #2043
- phpunit: fix deprecation warnings by @smhg in #2022
- PHP 8.4: fix deprecation notice by @gharlan in #2019
- FIX failing queries on datetime fields set to 1970-01-01 00:00:00 via (int) 0 by @hsegnitz in #2011
- fix timestampable use of datetimeclass by @smhg in #2017
- Fix/strict nullables by @eelkevdbos in #2039
- Avoid unused variables in timestampable behavior by @smhg in #2045
- add supported php versions to ci by @smhg in #2048
- Fix lastInsertId to forward sequence name by @PhilinTv in #2050
- Fix sorting flags in CollectionIterator by @PhilinTv in #2049
- removes user and password from dsn in commands (fixes #2013) by @smhg in #2047
- update phpstan to version 2 by @smhg in #2046
- WIP Update CI with newer PHP and PSQL versions by @PhilinTv in #1995
- Additional iconv transliteration tests by @PhilinTv in #2053
- Release candidate stable by @gechetspr in #2065
- Fix PHP 8.5 deprecation, use (bool) cast in generated code by @pableu in #2062
- 1966 - changed method "getPDOType" case to match opcache keys rules by @TheUnableDeveloper in #2056
- Collection class name performance fix by @Nidhognit in #2064
- Dropping PHP7 support by @gechetspr in #2068
- Release 2.0.0 by @gechetspr in #2067
New Contributors
- @vol4onok made their first contribution in #1994
- @pableu made their first contribution in #1996
- @ldaspt made their first contribution in #2015
- @Nidhognit made their first contribution in #2032
- @matweew made their first contribution in #2027
- @TheUnableDeveloper made their first contribution in #2056
Full Changelog: 2.0.0-beta4...2.0.0
-
2.0.0-beta423 Mar 2024 pre-releaseRelease notes
Open source →What's Changed
- Allow Symfony v7 by @Leonardo-Atalla in #1992
- Make compatible with 8.2 ArrayIterator interface updates by @oojacoboo in #1987
- PHP8.2 - Using ${var} in strings is deprecated, use {$var} instead by @scp in #1985
- Fix broken test on Postgres with PHP 8.2 by @mringler in #1980
- Fix tests after Symfony PropertyInfo update by @mringler in #1973
- Fix up PHPStan errors. by @michbeck in #1955
- Avoid name collision in cross-ref relations by @mringler in #1963
- Support ON UPDATE CURRENT_TIMESTAMP in MySQL by @Mau04 in #1967
New Contributors
- @Mau04 made their first contribution in #1967
- @scp made their first contribution in #1985
- @Leonardo-Atalla made their first contribution in #1992
Full Changelog: 2.0.0-beta3...2.0.0-beta4
-
2.0.0-beta325 Jan 2023 pre-releaseRelease notes
Open source →With this release, we continue Beta-version releasing toward API stabilization.
The main changes include:
- Added Monolog v3 support
- Performance improvement: Load databases without accessing classes by @mringler in #1910
- Load table maps lazily by @mringler in #1902
- Implemented migration rollback. by @romanhavrylko in #1932
- Add support for native UUID column type by @mringler in #1915
- Add type to store UUIDs as binary (UUID_BINARY) by @mringler in #1917
- Remove deprecated setter by @mringler in #1892
- Fix invalid duplicate indices using
ArchivableBehaviorfor some platforms by @felixgeyer in #1904 - Fix duplicate indices when converting unique index to index by @felixgeyer in #1903
- Fixed input type of findBy hints by @mringler in #1912
- Docblock query class fixes by @mringler in #1913
- Create IN filter expressions for subqueries by @mringler in #1920
- UUID adjustments for MariaDB by @mringler in #1924
- Added PHPStan Level 7 support by @dereuromark in #1938
- Allowed better management of foreign keys by managing foreign keys on archivable behavior by @mringler in #1935
- Fix CS for array in PHP generated files. by @dereuromark in #1940
- Fix up PHPStan errors. by @dereuromark in #1948
- Fix up DateTime PHPStan error. by @dereuromark in #1947
- Fixed CS and removed silencing in config. by @michbeck in #1949
- Fix up IDE found errors/problems. by @dereuromark in #1950
- Fixes PHPStan errors, set PHPStan to level 7 by @michbeck in #1951
- Fix up in array strictness for string value comparison. by @dereuromark in #1953
- Fix up redundant type casts by @michbeck in #1954
- Docblock cleanup by @dereuromark in #1899
BC breaking impact
- Removed deprecated way to add primary key setter
setPrimaryKey()for generated code.
New Contributors
- @romanhavrylko made their first contribution in #1932
- @michbeck made their first contribution in #1943
Full Changelog: 2.0.0-beta2...2.0.0-beta3
-
2.0.0-beta229 Jun 2022 pre-releaseRelease notes
Open source →2.0.0-beta2
With this release, we continue Beta-version releasing toward API stabilization.
The main changes include:
- PHP 8.1 and 8.2 compatibility
- Added strict types to generated code
- Added Symfony 6 support
- Dropped Symfony 3 support. The minimum required Symfony version is 4.4.0 now.
- Added Monolog 2 support
- Added a type safe access to the
StandardServiceContainerviaPropel::getStandardServiceContainer()method - Added support for the
DATETIMEcolumn type - Moved templates into own root level
- Overall code quality improvements
- Fixed
DatabaseComparatorin order to skip migration creation if table hasskipSqlflag - Fixed an issue with many-to-many mapping
- Fixed usage of deprecated date format
- Fixed column's time format issue
- Fixed issue with identifier quoting being ignored
- Fixed a debug mode behavior in order to use new connection with it
Many thanks to all the contributors!
@nederdirk @ikeyan @craigfrancis @jbarton123 @cristianoc72 @gharlan @javray @dereuromark @mringler @felixgeyer @oojacoboo @herasimenko1987 @fbourigault @manstie @asaulenko @dmytro-dymarchuk @yaroslav-spryker @DarkAxi0m @sacerro @geega @gechetsprBC breaking impact
Please note that all methods have param and return types being added now where they were feasible and ensure better code quality.
Make sure any extensions are updated here regarding their method signature.
TIMESTAMP column type in schema files for the MySql databases now generates column with actual TIMESTAMP type instead of DATETIME as it was previously. Propel diff considers it as a table structure change and generates migration.
As another side effect timestamps are only valid until 2037 (32bit). Make sure to adjust any databuilders or fixtures accordingly. -
2.0.0-beta105 Sep 2021 pre-releaseRelease notes
Open source →2.0.0-beta1
With this release, we start Beta-version releasing toward API stabilization.
The main changes include:
- PHP 8.1 compatibility
- Fixes for PHP 7.4 preloading
- Fixed usage of default on-update and on-delete behavior
- Show names of uncommitted migrations
- BehaviorLocator now looks in dev packages, as well
- Aggregate multiple columns behavior & parameter list support
- Fixes around aliases and cross joins and subqueries
- Added support for
keytypein the magic import/export methods - PSR naming fixes for variables and methods
- Reset partial flag when populating a relation
- Added
existsoperator - Escape quotes in behavior
- Quote primary table name if identifier quoting is enabled
- Formats insert
DATEvalues asY-m-dinstead ofY-m-d H:i:s.u - Allow default-value for concrete-inheritance to be instantiable
- Pluralize
BoxtoBoxes - Allow
NO ACTIONfor foreign key references (in the dtd/xsd) - Use object-equality instead of reference-equality to compare object properties
- Generates data dictionary documentation
- PHPStan related code cleanup
Many thanks to all the contributors!
BC breaking impact
Please note that methods have param and return types being added now where they were feasible and ensure better code quality.
Make sure any extensions are updated here regarding their method signature.
Some internal methods were also renamed to fit PSR coding standards.Due to the support of PHP 7.4 preloading, an update will need the configuration to be rebuilt once by calling
config:convert, see https://github.com/propelorm/Propel2/wiki/Exception-Target:-Loading-the-database#for-imported-configuration -
2.0.0-alpha925 Jun 2020 pre-releaseRelease notes
Open source →With this small release, we start a series of upgrades and stabilization activities of Propel2,
which aim to end with the following stable 2.0 release. New dependencies will allow us to get
more feedback on compatibility issues and addressing them during the stabilization phase.General
- Added compatibility PHP 7.4
- Added support of PSQL expressions [CURRENT_TIMESTAMP, LOCALTIMESTAMP]
- Allowed Symfony 5 dependency
- Removed PHP 5.x compatibility (with EOL 01.2019)
Tests
- Updated PHPUnit from 4.0/5.0 to 7.0
fce5f55 Keep tests for deprecated class. d44d035 Use term primary/replica instead, deprecate in BC way. 4c45713 Small fixes for PHP 7.4 c2dbbbc Only generate calls to parent hooks, if the class being generated has a base class 3f4b70c Use stable php74 f6d20df Add Symfony 5 dependency compatibility 603d42c Rearrange implode() arguments where necessary to conform to php7.4 decc437 Dropping dead PHP EOL 5.5 d84c8e3 Update to PHP74 Travis and simplify matrix. -
2.0.0-alpha819 Feb 2018 pre-releaseNothing published for this version
-
2.0.0-alpha703 Jan 2017 pre-releaseNothing published for this version
-
2.0.0-alpha615 Oct 2016 pre-releaseNothing published for this version
-
2.0.0-alpha527 Jun 2015 pre-releaseNothing published for this version
-
2.0.0-alpha420 Nov 2014 pre-releaseNothing published for this version
-
2.0.0-alpha316 Apr 2014 pre-releaseNothing published for this version
-
2.0.0-alpha230 Sep 2013 pre-releaseNothing published for this version
-
2.0.0-alpha1222 Jan 2021 pre-releaseRelease notes
Open source →2.0.0-alpha12
The main changes include:
- PHP 8 compatibility
- Widening the range of Symfony v4 to 4.0+ (instead of 4.3+)
- Fixed transaction handling when \Throwable is thrown
- Fixed identifierQuoting for Versionable behavior
- Fixed invalid hydration when using mergeWith of criteria with "with" models
- Adds the ability for locking reads, either shared or exclusive
- Updated TableMap generator to add column name map for normalization and performance speedup
- Use temporal formatter in the toArray() generator, fixes the issue of entities wrongly being marked as dirty due to differences in the datetime formatting
Many thanks to contributors! @mruoss, @prgTW, @FranciszekKrasowski, @bezpiatovs, @chuongnh3atgmaildotcom, @kasparsj, @nederdirk, @cristianoc72, @stereomon, @dereuromark .
BC breaking impact
Please note that due to PHP7 + PHP8 versions both able to be supported with this library, the PDO access had to be refactored in a not fully BC way. Instead of directly extending the PHP core classes, we now depend on interface contracts.
If your software has directly extended those in the past, please make sure to adjust your extensions accordingly.
- PDOStatement => Propel\Runtime\Connection\StatementInterface
- PdoConnection extends PDO implements ConnectionInterface => only implements the latter and proxies to PDO instead.
-
2.0.0-alpha1105 Aug 2020 pre-releaseRelease notes
Open source →With this release, we continue Alpha-version cleanups aiming API stabilization.
Many thanks to our contributors, who made possible this release to come that fast. 👍The main changes include:
- Fixed return value for "no migration needed" case in MigrationMigrateCommand
- Always create unique indices by constraint for Postgres (@daniel-rose)
- Do not try to fetch related objects of a new object (@gharlan)
- Map JSON type to native Postgres type (@tienbuide)
- Fixed nullable docblock for mutator methods (@dereuromark)
- PHP 7.2+ cleanups (class visibility modifiers, native types etc)
- Dropped EOL Symfony 2, Postgres 9.4 from test matrix
- Fixed docblocks and typehinting
- PHPStan level 5 static analyzing
- Yoda notation cleanup
-
2.0.0-alpha1013 Jul 2020 pre-releaseRelease notes
Open source →With this release, we continue Alpha-version cleanups aiming API stabilization. It's a good target for project updates, as it has the widest dependency list (including EOL components). In the following releases, we expect to reduce the support of EOL components.
Many thanks to our contributors, who made possible this release to come that fast. 👍
- Full support with Symfony components 2.7+, 3.3+, 4.0+, 5.0+ ( @Incognito )
- Adds support for MYSQL_ATTR_SSL_VERIFY_SERVER_CERT configuration option ( @marcusirgens )
- Fixed an issue where propel reverse breaks with system-versioned tables ( @zwhedbee )
- Applies PHPStan Level 1 Fixes, which corrects many warnings, type checks, missing types, and incorrect annotations. ( @dereuromark )
Some interesting commits in this release:
2da7387 Fix issue where propel reverse breaks with system-versioned tables (#1549) 4093a26 Allow option MYSQL_ATTR_SSL_VERIFY_SERVER_CERT to be set 584c40b Add PHPStan level 1 check with baseline until we can remove symf2. c8a40ff Sf validator v5 (#1603) 78862a2 Start enforcing PHPStan level 1. 9ea8516 Make execute() compatible to Symf5 int only. f3d47fd fix(PDO): Can't prepare query with BINARY_ALL criteria when ATTR_EMULATE_PREPARES is false 0027b1c sf validator in v3.0, v3.1 and v3.2 all have regex issues db208d7 The symfony 4.2 Unique validator is not a suitable replacement for Propel's 5e4361f Special composer for php8 testing 09f6f3a Mysql test were incorrectly setup 7a71f8c Prevent infinite loops when database is not connecting 3328fe1 Symfony 5 enforces return types on execute method 8734275 Now with updated console to Sf v5 5b3db85 Requires phpunit fix for reflection on php7.4. 7.5.15 Also runs on php7.1 https://github.com/sebastianbergmann/phpunit/compare/7.5.14...7.5.15 9bc9162 sf 2.5 is about 5 years past EOL, dropping it reduces unpredictable codepaths and feature sniffing 9cde76f Properly register the translation dependency needed by the validation behaviour for sf >= 2.5 cec2867 FIX bug CLOB_EMU oracle 33503a6 Make travis run postgresql 12 (#1580) 171743a Fix SQLite sprintf() error (#1587) 5221ebc Works on Trusty but not Xenial or Bionic. Because 10.1 is only a few months form EOL, using Trust is acceptable for this. 10.1 tests should be removed in the coming months anyway. 40466af Enable MariaDB builds c1b4361 Use PSR-4 autoloader 439b2b6 Raise code quality to PhpStan on lowest level 1 -
2.0.0-alpha105 Jun 2013 pre-releaseNothing published for this version