cycle/orm
PHP DataMapper ORM and Data Modelling Engine
v2.18.0
966K downloads/mo
#4673 most downloaded on Packagist
cycle/orm
What this package is like to depend on
Last release 2 months ago
15 Jun 2026
Release timing varies
gaps range from 2 weeks to 4 months
Most releases are documented
notes for 74 of 115 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
117 releases · first in 2019
19 releases in the last 12 months
see the full history below
Release timeline
115 releases · Feb 2019 to Jun 2026Releases
latest 60 of 117-
v2.18.015 Jun 2026 -
v2.17.002 Jun 2026Release notes
Open source →What's Changed
- Support BackedEnum for discriminator values in STI by @roxblnfk in #566
- Support
wrapWhere()from database 2.19 by @roxblnfk in #567 - Add
wrapWhereoption toQueryScopeby @roxblnfk in #568 - Fix relation override scope lost when Select is cloned by @roxblnfk in #569
Full Changelog: v2.16.2...v2.17.0
-
v2.16.222 May 2026 -
v2.16.118 May 2026Release notes
Open source →What's Changed
Enhanced documentation in load options classes in 62ded83
Full Changelog: v2.16.0...v2.16.1
-
v2.16.015 May 2026Release notes
Open source →What's Changed
- Allow
jsontype to be a scalar in the default Typecast by @gam6itko in #562 - Stream entities lazily via
Select::cursor()by @roxblnfk in #564
Full Changelog: v2.15.0...v2.16.0
- Allow
-
v2.15.017 Mar 2026Release notes
Open source →What's Changed
- Support LoadOptions DTOs in
BulkLoader::load()by @roxblnfk in #559 - Declare Select methods in code instead of annotations by @roxblnfk in #560
Full Changelog: v2.14.3...v2.15.0
- Support LoadOptions DTOs in
-
v2.14.306 Mar 2026 -
v2.14.205 Mar 2026 -
v2.14.105 Mar 2026Release notes
Open source →What was changed
Now, for
BelongsToMorphedrelations, you can legally manually specify themorph_typecolumn (withoutmorph_id). This won't work if the entity is not new and the relation was set tonullin this EM transaction (in this case, all relation fields will be prioritized tonull). #556Why?
Cycle ORM allowed some flexibility for the programmer. The recent fix that reset related fields broke some existing project codebases. To fix this, the old behavior was restored and supported with tests.
Even though this behavior is backed by tests, we still recommend not doing it this way for best practice reasons.
Full Changelog: v2.14.0...v2.14.1
-
v2.14.003 Mar 2026Release notes
Open source →What's Changed
- Add options DTOs for
Select::load()method by @roxblnfk in #553 - Fix indexing of entities with object PK like UUID in BulkLoader by @roxblnfk in #554
- Fix
BelongsToMorphednot clearing morph type on null relation by @roxblnfk in #555
Full Changelog: v2.13.2...v2.14.0
- Add options DTOs for
-
v2.13.210 Feb 2026Nothing published for this version
-
v2.13.130 Jan 2026Nothing published for this version
-
v2.13.030 Jan 2026Nothing published for this version
-
v2.12.326 Dec 2025Nothing published for this version
-
v2.12.216 Dec 2025Nothing published for this version
-
v2.12.116 Dec 2025Nothing published for this version
-
v2.12.012 Dec 2025Nothing published for this version
-
v2.11.124 Nov 2025Nothing published for this version
-
v2.11.009 Sep 2025Nothing published for this version
-
2.11.0-RC104 May 2025 pre-releaseNothing published for this version
-
v2.10.131 Mar 2025Nothing published for this version
-
v2.10.002 Mar 2025Nothing published for this version
-
v2.10.0-RC1no date pre-releaseNothing published for this version
-
v2.9.314 Jan 2025Nothing published for this version
-
v2.9.207 Jan 2025Nothing published for this version
-
v2.9.112 Dec 2024Nothing published for this version
-
v2.9.005 Jun 2024Nothing published for this version
-
v2.8.009 May 2024Nothing published for this version
-
v2.7.113 Feb 2024 -
v2.7.008 Feb 2024 -
v2.6.104 Jan 2024 -
v2.6.021 Dec 2023Release notes
Open source →- Add support for
loophp/collectionv7 by @msmakouz (#448) - Fix wrong adding table prefix on joins by @msmakouz (#447)
- Add support for
-
v2.5.025 Nov 2023Release notes
Open source →- Expose JSON methods in the Select query builder by @msmakouz (#445)
- Add NullHeap by @roxblnfk (#441)
-
v2.4.005 Oct 2023Release notes
Open source →- Add support uninitialized collections in entities by @roxblnfk (#431)
- Allow
doctrine/instantiator2.x by @msmakouz (#438) - Improve relations hydration for non-proxy entities. Now it more lazy. By @msmakouz (#429)
-
v2.3.431 Jul 2023Release notes
Open source →- Fix fields uncasting in the ManyToMany relation by @roxblnfk, thanks @gam6itko (#427, #428)
- Fix resolving of a not loaded parent in the relation RefersTo by @roxblnfk, thanks @msmakouz and snafets (#414)
- Fix belongs to relation when parent is changed using parent id by @roxblnfk, thanks @roquie (#346, #432)
-
v2.3.321 Jul 2023Release notes
Open source →- Fix loading for Embedded entities when parent is null by @gam6itko and @roxblnfk (#422, #423)
- Fix: remove extra joins from JTI and eager relations when ManyToMany is resolved. By @msmakouz and @roxblnfk (#418)
- Fix the Unit of Work persistState() method in a sequenced call. By @msmakouz and @roxblnfk (#424, #426)
- Fix ManyToMany lazy loading when value object are used as keys. By @msmakouz and @roxblnfk (#318, #420)
-
v2.3.219 Jun 2023Release notes
Open source →- Fix proxy-mapper hydration mechanism: public relations in a non-proxy-entity are hydrated like private ones.
There is a special logic related to
ReferenceInterfacehydrating. By @roxblnfk (#417) - Add the method
forUpdatein theSelectphpdoc. By @msmakouz (#413)
- Fix proxy-mapper hydration mechanism: public relations in a non-proxy-entity are hydrated like private ones.
There is a special logic related to
-
v2.3.101 May 2023Release notes
Open source →- Fix typecasting in relations when JTI entities are loaded by @roxblnfk (#408, #409)
-
v2.3.003 Apr 2023Release notes
Open source →- Update
where()andorderBy()behavior in the JTI case. It possible to pass parent field name. By @roxblnfk (#405) Select::wherePK()is now more strict. Use entity field name instead of table columns.- Fix method naming:
AbstractLoader::loadIerarchy()deprecated and renamed to::loadHierarchy(). - Class
\Cycle\ORM\Parser\Typecastis now not internal by @thenotsoft (#395) - Update test case generator script. Now it possible to set case name like "Issue777" and a template folder that
different from the default
CaseTemplateby @gam6itko (#389)
- Update
-
v2.2.208 Feb 2023Release notes
Open source →- Fix compatibility with PHP 8.2 (AllowDynamicProperties) by @roxblnfk (#394)
- Add tests with using for microseconds in a datetime fields by @BelaRyc and @msmakouz (#383)
-
v2.2.101 Dec 2022Release notes
Open source →- Fix
EM::persistState()that inserted the same entity twice by @roxblnfk (#368) - Fix bug on saving of replaced pivoted collection by @BelaRyc (#382)
- Fix
cascademode in BelongsTo relation by @roxblnfk and @msmakouz (#347, #374) - Fix storing od embedded entities in a JTI by @butschster (#379)
- Add tests case template by @roxblnfk and @kastahov (#372, #377)
- Add a previous exception in TransactionException on throwing by @Eugentis (#367)
- Add annotation
@readonlyforRepository::$selectby @roxblnfk (#369)
- Fix
-
v2.2.005 Jul 2022Release notes
Open source →- Add supporting for
loophp/collectionby @drupol (#344) - Add supporting for PHP 8.1 Enum in the default typecast handler
Cycle\ORM\Parser\Typecastby @roxblnfk (#352) - Improve
templateannotations inCycle\ORM\Select\RepositoryandCycle\ORM\Selectclasses by @roxblnfk (#351) - Classes
Cycle\ORM\Transaction\UnitOfWorkandCycle\ORM\Transaction\Runnerare now not internal by @roxblnfk (#353)
- Add supporting for
-
v2.1.205 Oct 2022Nothing published for this version
-
v2.1.105 Jun 2022Release notes
Open source →- Remove
$configproperty overriding in theRelationConfigby @msmakouz (#343) - Fix bug on ManyToMany resolving by @roxblnfk (#345)
- Remove
-
v2.1.026 Feb 2022Release notes
Open source →- Remove
finalfrom theSelectclass by @msmakouz (#327) - Fix keys comparing in the BelongsTo relation by @msmakouz (#326)
- Add Psalm
@templateannotations to RepositoryInterface by @roxblnfk
- Remove
-
v2.0.227 Jan 2022 -
v2.0.120 Jan 2022Release notes
Open source →- Fix protected relation fields hydration on eager loading @roxblnfk (#314)
-
v2.0.022 Dec 2021Release notes
Open source →- Minimal PHP version is 8.0
- Composited keys
- 'Joined Table Inheritance' and 'Single Table Inheritance'
- Added ProxyMapper (
Cycle\Orm\Mapper\Mapper) - Supporting for arrays/Doctrine/Laravel or custom collections in HasMany adn ManyToMany relations
- Typecasting moved to Mappers
- Added Typecast handlers with Castable/Uncastable interfaces
- Added Entity Manager and Unit Of Work instead of
Cycle\ORM\Transaction - A lot of Interfaces are changed
-
v1.8.204 Apr 2025Nothing published for this version
-
v1.8.117 Jan 2022Nothing published for this version
-
v1.8.028 Nov 2021Release notes
Open source →- Added
ORM::with. OtherORM::with*methods marked as deprecated @msmakouz (#257) - Better compatibility between
ConstrainInterfaceandScopeInterface@roxblnfk (#271)
- Added
-
v1.7.104 Nov 2021Release notes
Open source →- Fixed
Node::getChanges()when a key in$currentargument is undefined @msmakouz (#238)
- Fixed
-
v1.7.001 Nov 2021Release notes
Open source →- Update the Node data comparison mechanism @msmakouz (#235)
- Fix Entity data comparison with objects in fields @msmakouz (#234)
- Add ability for relations to independently determine related value changing @hustlahusky (#227)
-
v1.6.112 Oct 2021 -
v1.6.003 Sep 2021Release notes
Open source →- Added Scope classes and deprecations for Constrain classes @roxblnfk (#209)
-
v1.5.106 Aug 2021 -
v1.4.209 May 2021 -
v1.4.102 Apr 2021 -
v1.4.031 Mar 2021Release notes
Open source →- Added support of Doctrine/Annotations v2 by @roxblnfk
- Bugfix: prevent merge nodes with same roles when initializing pivot entity by @hustlahusky
- Bugfix: RefersTo and BelongTo relations innerKey naming error by @roxblnfk
- Added 'orderBy' option for relations by @roxblnfk
- Fixed ID mapping column is set and differs from the field name by @roxblnfk
-
v1.3.4no dateNothing published for this version