public function testDelete() { $data = [['id' => 1, 'name' => 'foo'], ['id' => 2, 'name' => 'bar'], ['id' => 3, 'name' => 'foobar']]; // Delete all $source = new ArrayDataSource($data); $selection = new DeleteSelectionBuilder($source); $selection->delete(); $this->assertEmpty($source->getData()); // Delete with a predicate $source = new ArrayDataSource($data); $selection = new DeleteSelectionBuilder($source); $selection->where('id <= %i', 2)->delete(); $this->assertEquals(1, count($source->getData())); $this->assertArrayHasKey(2, $source->getData()); $this->assertEquals([2 => $data[2]], $source->getData()); // Delete with a limit $source = new ArrayDataSource($data); $selection = new DeleteSelectionBuilder($source); $selection->limit(1)->delete(); $this->assertEquals(2, count($source->getData())); $this->assertEquals([1 => $data[1], 2 => $data[2]], $source->getData()); // Delete sorted with a limit $source = new ArrayDataSource($data); $selection = new DeleteSelectionBuilder($source); $selection->orderByDescending('id')->limit(1)->delete(); $this->assertEquals(2, count($source->getData())); $this->assertEquals([0 => $data[0], 1 => $data[1]], $source->getData()); }
/** * Delete selected records. * * @return int Number of deleted records. */ public function delete() { $selection = new DeleteSelectionBuilder($this->getSource()); return $selection->delete(); }