Add nested array format support for marshalling associations#19122
Open
dereuromark wants to merge 1 commit into5.nextfrom
Open
Add nested array format support for marshalling associations#19122dereuromark wants to merge 1 commit into5.nextfrom
dereuromark wants to merge 1 commit into5.nextfrom
Conversation
Allow the same nested array format as contain() for marshalling: - Dot notation: ['First.Second'] - Nested arrays: ['First' => ['Second', 'Third']] - Mixed with options: ['First' => ['Second', 'onlyIds' => true]] Uses CakePHP naming conventions to distinguish associations from options: - Association names start with uppercase (CamelCase): Users, Articles - Option keys start with lowercase (camelCase): onlyIds, conditions - Special data keys start with underscore: _joinData, _ids This approach avoids maintaining a hardcoded list of known option keys.
LordSimal
approved these changes
Dec 30, 2025
Member
|
While this syncs the array format used for |
Member
Author
|
Isnt "associated" a bit too verbose for a bunch of nested ones? |
Contributor
How about |
Member
Author
|
I dont quite follow. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
contain()for marshalling associationsThis enables writing:
Instead of requiring the explicit
associatedkey at every level:How it works
Uses CakePHP naming conventions to detect associations vs options:
Users,ArticlesonlyIds,conditions_joinData,_idsThis avoids maintaining a hardcoded list of known option keys that would need updating whenever new options are added.
Related to #18988 (6.x version).
If we wanted to harden this, we could go with the alternative option(s) in that 6.x PR (e.g.
_optionskey for any custom options that are not assoc aliases), but then it couldnt be used in 5.next yet.