Commit Graph

21 Commits

Author SHA1 Message Date
Steve Boyd 137ebcebec API Stop using deprecated API 2022-11-15 18:20:54 +13:00
Guy Sartorelli 0bc3ed4d2c Merge branch '4.9' into 4.10 2022-05-27 15:19:17 +12:00
Guy Sartorelli 19bb72e7c7 FIX Correctly remove relations with ManyManyThroughList::removeall
Instead of just setting one side of the relation to null in the through
list, remove the rows entirely.
Remove only the relations which match the filters that have already been
set on the list.
This is consistent with the way ManyManyList works.

Also some small tidy-up (removing an unnecessary line break and an
unused "use" statement)
2022-05-05 11:21:51 +12:00
Steve Boyd cd076542f4
API Upgrade SapphireTest to work with phpunit 9 (#10028) 2021-10-27 15:39:47 +13:00
Sam Minnee 0d7c5a9ece NEW Add/remove callbacks on RelationList
This provides a mechanism for adjusting the behaviour of these
relations when building more complex data models.

For example the following example has a status field incorporates a
Status field into the relationship:

```php
function MyRelation() {
  $rel = $this->getManyManyComponents(‘MyRelation’);
  $rel = $rel->filter(‘Status’, ‘Active’);

  $rel->addCallbacks()->add(function ($relation, $item, $extra) {
    $item->Status = ‘Active’;
    $item->write();
  });
}
```

Introduces a new library dependency: http://github.com/sminnee/callbacklist
2020-09-18 13:33:42 +12:00
Sam Minnee 01d3b4fd96 FIX: Set many-many-through joinRecord on newly added records.
When many-many-through relations are queried, a joinRecord is set on
each DataObject in the list to provide the extra fields defined on
the connector object. This didn’t previously happen when the record
was first add()ed to a list. This fixes that bug.
2020-07-02 15:18:12 +12:00
Michael Strong 7086f2ea3a BUGFIX many many through not sorting by join table (#8534)
* BUGFIX many many through not sorting by join table

* #8534 added docs to support many many sorting fix

* #8534 added test cases for many_many default sorting
2018-11-01 13:42:27 +13:00
Robbie Averill d18b8eb9fb Add more tests for descending sort orders 2018-09-28 15:42:45 +02:00
Robbie Averill 4aa7fb70ee Add tests that show that joinClass default_sort is not used and order is honoured 2018-09-28 15:38:37 +02:00
Robbie Averill 0c7ced1513 Refactor sorting tests to use a dataprovider 2018-09-27 17:18:19 +02:00
Robbie Averill 3321c6b39d Add tests for sorting many many through list without a table alias 2018-09-27 14:34:37 +02:00
Daniel Hensby 1a57c7c1d0
NEW Add getJoinTable to MMTL 2018-05-14 11:19:24 +01:00
Damian Mooyman 257ff69e32 API Implement many_many through polymorphic (from only) (#7928)
* API Support many_many through polymorphic relations (from side only)
Fixes #7911
Fixes #3136

* Add extra docs and allow optional arguments

* ENHANCEMENT Enable quiet to be turned off

* BUG Fix issue with manymanythroughlist duplication
2018-03-22 10:26:25 +13:00
Werner M. Krauß f686b50824 API Rename assert dos to assert list 2017-10-09 11:53:11 +13:00
Damian Mooyman fba8e2c245 API Remove Object class
API DataObjectSchema::manyManyComponent() return array is now associative array
2017-05-23 13:50:35 +12:00
Daniel Hensby ac075eaf0b Remove TestListener and rely on PHPUnits APIs 2017-03-30 11:46:58 +13:00
Damian Mooyman ac3a9c9e6e API Split out SilverStripe\ORM\Versioned into new module 2017-03-27 11:03:39 +13:00
Daniel Hensby 0410b4c35e
Respect PHPUnit method visibility 2017-03-24 16:23:03 +13:00
Damian Mooyman c2a1e86f5d Apply PSR2 / Namespace to remaining admin / tests 2016-12-19 16:08:19 +13:00
Damian Mooyman 6e8304ff2f API Namespace framework tests 2016-11-23 19:25:12 +13:00
Damian Mooyman 789cb5b465 Move files to psr-2 standard locations 2016-11-23 19:25:12 +13:00