73 Commits

Author SHA1 Message Date
Guy Sartorelli
dcd33319c7
Merge branch '5.1' into 5.2 2024-03-18 15:33:54 +13:00
Thomas Portelange
b031ade73a
ENH update some docblock types (#11168) 2024-03-13 10:08:56 +13:00
Guy Sartorelli
528344d1b0
NEW Allow manipulating eagerloading queries (#11140) 2024-02-20 16:17:31 +13:00
github-actions
7e30e38ae6 Merge branch '5.1' into 5 2024-02-14 22:58:30 +00:00
Guy Sartorelli
d33332cb9e
FIX Add eagerloaded data to ALL relevant lists (#11139) 2024-02-15 11:57:22 +13:00
Guy Sartorelli
357ed7ad7e
ENH Add generic types (#11108)
There are also a few general corrections to PHPDocs that I noticed along
the way (e.g. adding `|null` when the method is returning a null value.

There are some cases where either the return type or the whole PHPDoc
was duplicated from the parent class - in those cases I've simply
removed the duplication.
2024-01-17 17:08:26 +13:00
github-actions
cb520db8b7 Merge branch '5.1' into 5 2023-11-01 20:14:50 +00:00
Sabina Talipova
56511c8618 MNT Remove TODO comments 2023-10-30 13:21:09 +13:00
Guy Sartorelli
7d5c62ed5f
NEW Add rightJoin method to DataList (#10961) 2023-09-27 15:24:32 +13:00
Guy Sartorelli
b4463d9050
NEW Enable ArrayList and EagerLoadedList to use search filters (#10925) 2023-08-29 15:40:19 +12:00
Steve Boyd
358cbc9ee5 ENH Do not use placeholders by default for foreignIDFilter() 2023-08-09 10:46:08 +12:00
Guy Sartorelli
c9f48089c9
FIX Ensure DataList::eagerLoad() returns a clone (#10899) 2023-08-04 12:04:20 +12:00
Guy Sartorelli
3628cec1f3
FIX Empty relations don't have extra DB calls with eager-loading (#10886) 2023-08-04 12:02:42 +12:00
Guy Sartorelli
ae49e134a9
NEW Use custom list for eagerloaded relations (#10869) 2023-08-03 15:33:13 +12:00
Guy Sartorelli
642321db61
FIX Trigger eagerloading for first() and last() (#10875) 2023-07-20 16:37:03 +12:00
Guy Sartorelli
95d1c674a2
FIX Allow multiple iterations of eager-loaded DataLists
Includes making sure toArray() uses the correct iteration logic,
and cloning resets the eagerloaded data for the new clone.

Previously, a second iteration would add every relation item to the
relation list a second time - so with each iteration your relation list
count doubled (though it was the same records time and again).
2023-07-17 12:03:11 +12:00
Guy Sartorelli
d0ca9cfdde
FIX many_many extraFields and join records weren't in eagerloading 2023-07-17 12:03:11 +12:00
Guy Sartorelli
7af0fe245c
FIX Resolve problems with eagerloading performance 2023-07-06 14:33:01 +12:00
Guy Sartorelli
85e503d012
ENH Refactor eagerloading fetch into separate methods
It is hard to work with the current structure - having each relation
type in its own method makes it way easier to see where my concerns
start and end with a given relation.

This also reduces the chance of variable bleed-over, where the value in
a variable in the first loop (in the same or other relation type) could
bleed into the next iteration of the loop.
2023-07-05 12:48:58 +12:00
Steve Boyd
ed07303703 ENH Cache $item->ID for eager loading 2023-06-27 19:46:29 +12:00
Steve Boyd
e9358c88af DOC Update eagerLoad() docblock 2023-06-21 14:12:55 +12:00
Steve Boyd
246735101a NEW ORM eager loading 2023-06-07 14:59:02 +12:00
Steve Boyd
696fe79dd6 FIX Use OR conjuctive in filterAny aggregate queries 2023-05-17 11:55:56 +12:00
Guy Sartorelli
826028082b
FIX Sort without specifying a table name (#10675)
Using a table name in sort() is not allowed in CMS 5. We could use
orderBy() here but member is the table it will sort on by default anyway
so there's no need.

Also added unit tests, which should have caught this ages ago.
2023-02-01 13:52:13 +13:00
Maxime Rainville
d1e0e1e305 ENH Make limit method return no results when zero is provided 2023-01-27 10:00:41 +13:00
Maxime Rainville
944722f34f API Removed #[\ReturnTypeWillChange] annotations 2023-01-26 18:10:05 +13:00
Steve Boyd
ae4d7fa090 API Create orderBy() method to handle raw SQL 2022-12-07 12:25:58 +13:00
Guy Sartorelli
a76fa32a39
API Remove unnecessary getGenerator() method.
`getIterator()` now returns a generator by default.
2022-09-15 13:29:29 +12:00
Guy Sartorelli
bf331072df
FIX Don't try to call count() on an iterator 2022-09-15 13:29:29 +12:00
Sam Minnee
9eb9e13071
FIX: Re-set finalisedQuery to allow recreation of iterator. 2022-09-15 13:29:29 +12:00
Sam Minnee
9c7ecb1f79
Further work on Loz’ solution 2022-09-15 13:29:29 +12:00
Loz Calver
850482138b
Proposed solution for caching template generator counts 2022-09-15 13:29:29 +12:00
Loz Calver
1b8f601023
NEW: Make DataList::getIterator a generator 2022-09-15 13:29:00 +12:00
Guy Sartorelli
06b13e0fa6
Revert "Merge pull request #10450 from creative-commoners/pulls/5/rescue-master-generators" (#10483)
This reverts commit 9edf3a5ca635f9687179143373fe25bddf10c5e3, reversing
changes made to 934fafd29d07a248e00b3055a2ae6d2edab243f6.
2022-09-02 10:58:37 +12:00
Guy Sartorelli
1153bacc11
API Remove unnecessary getGenerator() method.
`getIterator()` now returns a generator by default.
2022-08-11 16:29:39 +12:00
Guy Sartorelli
5bdfaea78a
FIX Don't try to call count() on an iterator 2022-08-11 16:29:39 +12:00
Daniel Hensby
595835bb15
Merge pull request #6518 from sminnee/generators
Use Generators for ORM Query, Map, ArrayList
2022-08-11 16:29:32 +12:00
Mojmir Fendek
26d59944e0 ENH: RemoveAll() memory performance enhancement. 2022-05-13 11:19:04 +12:00
Steve Boyd
511b3bb060 ENH PHP 8.1 compatibility 2022-04-14 13:12:59 +12:00
Lukas
552cf5944d
MNT Fix various typos with codespell (#10177) 2021-12-13 21:05:33 +13:00
Maxime Rainville
6fc25e4e96
RFC Add chunk method to DataList to iterate over large dataset (#8940) 2021-04-14 07:49:44 +12:00
William Desportes
c932d7e7fb
Fix the phpdoc blocks 2020-12-21 22:23:23 +01:00
Robbie Averill
27bd5d12e3 ENH Replace E_USER_ERROR errors with exceptions 2020-09-24 23:51:21 -07:00
Steve Boyd
4c3a5441b2 Merge branch '4.6' into 4 2020-09-09 13:58:35 +12:00
Guy Marriott
91591373d6 NEW Add exists as a method to the DataQuery API that will generate an SQL "exists" query
The exists query in SQL allows the query optimiser (engine specific) to execute these queries much faster - often only needing the presence of an index to return "yes it exists".
2020-09-01 16:20:07 +12:00
Mason Dechaineux
abd0f3fbf3 Fix DataList->column mutating underlying DataQuery 2020-08-21 09:25:27 +10:00
Sam Minnée
b810b7d5c9
API: Allow for user-created objects to have values passed in the constructor (#8591) 2020-08-20 12:28:31 +12:00
Nicolaas
d292eb8840
PATCH: fix doctype return type hints: add null 2020-07-23 21:10:17 +12:00
Jackson Darlow
6813c0f7e8 Added documentation regarding some cached ORM scenarios 2020-06-17 17:17:04 +12:00
mattclegg
df8cb9e010
DOCS: Update filter to use correct class 2020-04-28 17:50:40 +05:45