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');
 }
示例#3
0
文件: Api.php 项目: c15k0/psfs
 /**
  * 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);
                 }
             }
         }
     }
 }