NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #4782 most downloaded on Packagist
PHP DataMapper ORM and Data Modelling Engine
Last release 6 days ago
02 Oct 2026
Release timing varies
gaps range from 2 weeks to 4 months
Most releases are documented
notes for 39 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
118 releases · first in 2019
Fix: keep children when a nullable collection is reordered by @roxblnfk in #576
Full Changelog: v2.18.0...v2.18.1
Add RefersToMorphed relation for cyclic morphed references by @roxblnfk in #570
Full Changelog: v2.17.0...v2.18.0
One column per quarter.
Support BackedEnum for discriminator values in STI by @roxblnfk in #566
wrapWhere() from database 2.19 by @roxblnfk in #567wrapWhere option to QueryScope by @roxblnfk in #568Full Changelog: v2.16.2...v2.17.0
Fix embedded entities loading via BulkLoader by @roxblnfk in #565
Full Changelog: v2.16.1...v2.16.2
Enhanced documentation in load options classes in 62ded83
Enhanced documentation in load options classes in 62ded83
Full Changelog: v2.16.0...v2.16.1
Allow json type to be a scalar in the default Typecast by @gam6itko in #562
json type to be a scalar in the default Typecast by @gam6itko in #562Select::cursor() by @roxblnfk in #564Full Changelog: v2.15.0...v2.16.0
Support LoadOptions DTOs in BulkLoader::load() by @roxblnfk in #559
BulkLoader::load() by @roxblnfk in #559Full Changelog: v2.14.3...v2.15.0
Fix keys processing in BulkLoader by @roxblnfk in #558
Full Changelog: v2.14.2...v2.14.3
Fix BulkLoader indexing with Stringable primary keys by @roxblnfk in #557
Full Changelog: v2.14.1...v2.14.2
Now, for BelongsToMorphed relations, you can legally manually specify the morph_type column (without morph_id ). This won't work if the entity is not
Now, for BelongsToMorphed relations, you can legally manually specify the morph_type column (without morph_id). This won't work if the entity is not new and the relation was set to null in this EM transaction (in this case, all relation fields will be prioritized to null). #556
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
Add options DTOs for Select::load() method by @roxblnfk in #553
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fix inserting order in regular cases by @roxblnfk and @gam6itko
Add Generated Fields option into ORM Schema by @roxblnfk
Fix compatibility with PHP 8.3 by @msmakouz
Add support for loophp/collection v7 by @msmakouz
loophp/collection v7 by @msmakouz (#448)Expose JSON methods in the Select query builder by @msmakouz
Add support uninitialized collections in entities by @roxblnfk
doctrine/instantiator 2.x by @msmakouz (#438)Fix fields uncasting in the ManyToMany relation by @roxblnfk, thanks @gam6itko (#427, #428)
Fix loading for Embedded entities when parent is null by @gam6itko and @roxblnfk (#422, #423)
Fix proxy-mapper hydration mechanism: public relations in a non-proxy-entity are hydrated like private ones. There is a special logic related to Refer
ReferenceInterface hydrating. By @roxblnfk (#417)forUpdate in the Select phpdoc. By @msmakouz (#413)Fix typecasting in relations when JTI entities are loaded by @roxblnfk (#408, #409)
Fix method naming: AbstractLoader::loadIerarchy() deprecated and renamed to ::loadHierarchy().
where() and orderBy() 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.AbstractLoader::loadIerarchy() deprecated and renamed to ::loadHierarchy().\Cycle\ORM\Parser\Typecast is now not internal by @thenotsoft (#395)CaseTemplate by @gam6itko (#389)Fix compatibility with PHP 8.2 (AllowDynamicProperties) by @roxblnfk
Fix EM::persistState() that inserted the same entity twice by @roxblnfk
EM::persistState() that inserted the same entity twice by @roxblnfk (#368)cascade mode in BelongsTo relation by @roxblnfk and @msmakouz (#347, #374)@readonly for Repository::$select by @roxblnfk (#369)Add supporting for `loophp/collection` by @drupol
loophp/collection by @drupol (#344)Cycle\ORM\Parser\Typecast by @roxblnfk (#352)template annotations in Cycle\ORM\Select\Repository and Cycle\ORM\Select classes by @roxblnfk (#351)Cycle\ORM\Transaction\UnitOfWork and Cycle\ORM\Transaction\Runner are now not internal by @roxblnfk (#353)Nothing published for this version
Remove $config property overriding in the RelationConfig by @msmakouz
$config property overriding in the RelationConfig by @msmakouz (#343)Remove final from the Select class by @msmakouz
final from the Select class by @msmakouz (#327)@template annotations to RepositoryInterface by @roxblnfkFix a Tuple updating in the Pool by @roxblnfk
Fix protected relation fields hydration on eager loading @roxblnfk
'Joined Table Inheritance' and 'Single Table Inheritance'
Cycle\Orm\Mapper\Mapper)Cycle\ORM\TransactionNothing published for this version
Nothing published for this version
Added ORM::with. Other ORM::with* methods marked as deprecated @msmakouz
ORM::with. Other ORM::with* methods marked as deprecated @msmakouz (#257)ConstrainInterface and ScopeInterface @roxblnfk (#271)Fixed Node::getChanges() when a key in $current argument is undefined @msmakouz
Node::getChanges() when a key in $current argument is undefined @msmakouz (#238)Update the Node data comparison mechanism @msmakouz
Prevent repeating entity hydration in the 'has many' relation
Added Scope classes and deprecations for Constrain classes @roxblnfk
Hotfix: missing type casting to string for primary key @roquie
- Hotfix: PK changes not tracked (#179) - Better heap sync
Fix inserting empty entities by @roxblnfk
Added support of Doctrine/Annotations v2 by @roxblnfk
Your coding agent can read these notes before it upgrades. Set up the MCP server →