public function testFilterBy() { $c = new ModelCriteria('bookstore', 'Propel\\Tests\\Bookstore\\Book'); $c->filterBy('Title', 'foo'); $sql = $this->getSql('SELECT FROM `book` WHERE book.TITLE=:p1'); $params = array(array('table' => 'book', 'column' => 'TITLE', 'value' => 'foo')); $this->assertCriteriaTranslation($c, $sql, $params, 'filterBy() accepts a simple column name'); $c = new ModelCriteria('bookstore', 'Propel\\Tests\\Bookstore\\Book'); $c->filterBy('Title', 'foo', Criteria::NOT_EQUAL); $sql = $this->getSql('SELECT FROM `book` WHERE book.TITLE<>:p1'); $params = array(array('table' => 'book', 'column' => 'TITLE', 'value' => 'foo')); $this->assertCriteriaTranslation($c, $sql, $params, 'filterBy() accepts a sicustom comparator'); $c = new ModelCriteria('bookstore', 'Propel\\Tests\\Bookstore\\Book', 'b'); $c->filterBy('Title', 'foo'); $sql = $this->getSql('SELECT FROM `book` WHERE book.TITLE=:p1'); $params = array(array('table' => 'book', 'column' => 'TITLE', 'value' => 'foo')); $this->assertCriteriaTranslation($c, $sql, $params, 'filterBy() accepts a simple column name, even if initialized with an alias'); }
public function testGetParams() { $c = new ModelCriteria('bookstore', 'Propel\\Tests\\Bookstore\\Book'); $c->filterBy('Title', 'foo'); $expectedParams = array(array('table' => 'book', 'column' => 'title', 'value' => 'foo')); $params = $c->getParams(); $this->assertEquals($expectedParams, $params, 'test getting parameters with a simple criterion'); $c = new ModelCriteria('bookstore', 'Propel\\Tests\\Bookstore\\Book'); $c->filterBy('Title', 'foo', Criteria::LIKE); $expectedParams = array(array('table' => 'book', 'column' => 'title', 'value' => 'foo')); $this->assertEquals($expectedParams, $params, 'test getting parameters with Specialized Criterion used for LIKE expressions'); }
/** * Add filters fields to query * * @param ModelCriteria $query */ private function addFilters(ModelCriteria &$query) { if (count($this->query) > 0) { foreach ($this->query as $field => $value) { if ($this->checkFieldExists($field)) { $tableField = ucfirst($field); if (preg_match('/^<=/', $value)) { $query->filterBy($tableField, substr($value, 2, strlen($value)), Criteria::LESS_EQUAL); } elseif (preg_match('/^<=/', $value)) { $query->filterBy($tableField, substr($value, 1, strlen($value)), Criteria::LESS_EQUAL); } elseif (preg_match('/^>=/', $value)) { $query->filterBy($tableField, substr($value, 2, strlen($value)), Criteria::GREATER_EQUAL); } elseif (preg_match('/^>/', $value)) { $query->filterBy($tableField, substr($value, 1, strlen($value)), Criteria::GREATER_THAN); } elseif (preg_match('/^(\'|\\")(.*)(\'|\\")$/', $value)) { $text = preg_replace('/(\'|\\")/', '', $value); $text = preg_replace('/\\ /', '%', $text); $query->filterBy($tableField, '%' . $text . '%', Criteria::LIKE); } else { $query->filterBy($tableField, $value, Criteria::EQUAL); } } } } }