/** * Implement to return an array of unique identifiers to filter from the list. * * @param Collection $list The data list to filter. * @return array */ public function doGetUniqueIdentifiersToFilter(Collection $list) { $ids = []; foreach ($list as $item) { $collection = $item[$this->collectionProperty]; $filter = new Group("AND"); $filter->addFilters($collection->getFilter(), new Equals($this->columnName, $this->equalTo)); $collection->filter($filter); if (!sizeof($collection)) { $ids[] = $item->UniqueIdentifier; } } return $ids; }
public function testRepositoryFilters() { $group = new Group(); $group->addFilters(new Equals("CompanyName", "GCD")); $list = new Collection("Rhubarb\\Stem\\Tests\\Fixtures\\Company"); $list->filter($group); sizeof($list); $this->assertStringStartsWith("SELECT `tblCompany`.* FROM `tblCompany` WHERE ( `tblCompany`.`CompanyName` = :", MySql::getPreviousStatement()); $this->assertTrue($group->wasFilteredByRepository()); $group = new Group(); $group->addFilters(new Equals("CompanyName", "GCD")); $group->addFilters(new Equals("Test", "GCD")); $list = new Collection("Rhubarb\\Stem\\Tests\\Fixtures\\Company"); $list->filter($group); sizeof($list); $statement = MySql::getPreviousStatement(); $this->assertStringStartsWith("SELECT `tblCompany`.* FROM `tblCompany` WHERE ( `tblCompany`.`CompanyName` = :", $statement); $this->assertFalse($group->wasFilteredByRepository()); $group = new Group(); $group->addFilters(new Contains("CompanyName", "GCD")); $list = new Collection("Rhubarb\\Stem\\Tests\\Fixtures\\Company"); $list->filter($group); sizeof($list); $this->assertStringStartsWith("SELECT `tblCompany`.* FROM `tblCompany` WHERE ( `tblCompany`.`CompanyName` LIKE :", MySql::getPreviousStatement()); }
public function testFilterSetsModelValues() { $subGroup = new Group("And"); $subGroup->addFilters(new Equals("Forename", "Andrew"), new GreaterThan("DateOfBirth", 18)); $andGroup = new Group("And"); $andGroup->addFilters(new Equals("CompanyID", 1), new Equals("Surname", "Cuthbert"), $subGroup); $orGroup = new Group("Or"); $orGroup->addFilters(new Equals("CompanyID", 1), new Equals("Surname", "Cuthbert"), $subGroup); $model = new Example(); $andGroup->setFilterValuesOnModel($model); $this->assertEquals(1, $model->CompanyID); $this->assertEquals("Cuthbert", $model->Surname); $this->assertEquals("Andrew", $model->Forename); $model = new Example(); $orGroup->setFilterValuesOnModel($model); $this->assertNotEquals(1, $model->CompanyID); $this->assertNotEquals("Cuthbert", $model->Surname); $this->assertNotEquals("Andrew", $model->Forename); }