diff --git a/src/Model/Behavior/SequenceBehavior.php b/src/Model/Behavior/SequenceBehavior.php index f0effce..fdf6d35 100644 --- a/src/Model/Behavior/SequenceBehavior.php +++ b/src/Model/Behavior/SequenceBehavior.php @@ -453,6 +453,13 @@ protected function _getOldValues(EntityInterface $entity): array $order = $values[$config['sequenceField']]; unset($values[$config['sequenceField']]); + foreach ($values as $field => $value) { + if (is_null($value)) { + $values[$field . ' IS'] = $value; + unset($values[$field]); + } + } + return [$order, $values]; } diff --git a/tests/TestCase/Model/Behavior/SequenceBehaviorTest.php b/tests/TestCase/Model/Behavior/SequenceBehaviorTest.php index 8640528..3d49f8e 100644 --- a/tests/TestCase/Model/Behavior/SequenceBehaviorTest.php +++ b/tests/TestCase/Model/Behavior/SequenceBehaviorTest.php @@ -159,6 +159,14 @@ public function testSaveNullScoped() $this->assertOrder([1, 4, 3, 5], $GroupedItems, ['group_field' => 1]); $this->assertOrder([6, 2, 7, 8, 17, 9, 10, 16], $GroupedItems, ['group_field IS' => null]); $this->assertOrder([11, 12, 13, 14, 15], $GroupedItems, ['group_field' => 3]); + + // Test editing record with scope null + $entity = $GroupedItems->get(8); + $entity->position = 5; + $entity = $GroupedItems->save($entity); + $this->assertOrder([1, 4, 3, 5], $GroupedItems, ['group_field' => 1]); + $this->assertOrder([6, 2, 7, 17, 9, 8, 10, 16], $GroupedItems, ['group_field IS' => null]); + $this->assertOrder([11, 12, 13, 14, 15], $GroupedItems, ['group_field' => 3]); } /**