/** * Berechnet die Updates / Inserts / Deletes zwischen den beiden Collections * * wird keine $compareFunction angegeben, werden die Elemente der Collection als Objekte behandelt * wird keine $uniqueHashFunction angegeben werden diese mit spl_object_hash() gehashed * @return list($inserts, $updates, $deletes) */ public function computeCUDSets(ArrayCollection $fromCollection, ArrayCollection $toCollection, $compareFunction = NULL, $uniqueHashFunction = NULL) { if (!isset($compareFunction)) { $compareFunction = ArrayCollection::COMPARE_OBJECTS; } return $fromCollection->computeCUDSets($toCollection, $compareFunction, $uniqueHashFunction); }
/** * @group CUD */ public function testComputeCUDSets() { $collection1 = new ArrayCollection(); $collection1[] = $o10 = new CollectionObject(10); $collection1[] = $o20 = new CollectionObject(20); $collection1[] = $o30 = new CollectionObject(30); $collection1[] = $o40 = new CollectionObject(40); $collection1[] = $o50 = new CollectionObject(50); $collection1[] = $o2 = new CollectionObject(2); $collection1[] = $o1 = new CollectionObject(1); $collection1[] = $o3 = new CollectionObject(3); $collection2 = new ArrayCollection(); $collection2[] = $o10; $collection2[] = $o40; $collection2[] = $o50; $collection2[] = $o2; $collection2[] = $o1; $collection2[] = $o3; $collection2[] = $o4 = new CollectionObject(4); $collection2[] = $o110 = new CollectionObject(110); $collection2[] = $o120 = new CollectionObject(120); $collection2[] = $o130 = new CollectionObject(130); $collection2[] = $o140 = new CollectionObject(140); $collection2[] = $o150 = new CollectionObject(150); $collection2[] = $o160 = new CollectionObject(160); $collection2[] = $o170 = new CollectionObject(170); $collection2[] = $o180 = new CollectionObject(180); $collection2[] = $o190 = new CollectionObject(190); $collection2[] = $o200 = new CollectionObject(200); list($inserts, $updates, $deletes) = $collection1->computeCUDSets($collection2, ArrayCollection::COMPARE_OBJECTS); $this->assertArrayEquals(array($o20, $o30), $deletes->toArray()); $this->assertArrayEquals(array($o4, $o110, $o120, $o130, $o140, $o150, $o160, $o170, $o180, $o190, $o200), $inserts->toArray()); $this->assertArrayEquals(array($o10, $o40, $o50, $o2, $o1, $o3), $updates->toArray()); }