Ejemplo n.º 1
0
 /**
  * @param string $fullUrl Full url.
  * @param array $params
  * @return \Phalcon\Mvc\Model\Query
  */
 public static function buildQuery($fullUrl, array $params = array())
 {
     /**
      * @var \Phalcon\Di $di
      */
     global $di;
     /**
      * @var \Phalcon\Mvc\Model $modelName
      */
     $modelName = Text::camelize(Text::uncamelize(Analyzer::getModelName($fullUrl)));
     $builder = new Builder();
     $builder->setDI($di);
     $builder->from($modelName);
     self::setColumns($builder, $params);
     $prepareUrl = self::getPrepareUrlOperators($fullUrl);
     $whereSql = self::buildWhere($prepareUrl);
     $whereSqlReplacement = Macros::replace($whereSql, $params, $modelName);
     $builder->where($whereSqlReplacement);
     $builder = self::limit($builder, $params);
     $builder = self::orderBy($builder, $params);
     $params = new Params($fullUrl, $params);
     $params = $params->getPrepareParams();
     $query = $builder->getQuery();
     $query->setBindParams($params, true);
     return $query;
 }
Ejemplo n.º 2
0
 /**
  * @param string $string
  * @param array $params
  * @param $modelName Model name.
  * @return string
  */
 private static function replaceColumnsLikes($string, array $params, $modelName)
 {
     $columns = isset($params['columns']) ? $params['columns'] : self::getModelColumns($modelName);
     $columns = array_map(function ($column) {
         return Text::uncamelize($column) . ' LIKE :search:';
     }, $columns);
     $columns = implode(' OR ', $columns);
     return preg_replace('/{columns likes}/', $columns, $string);
 }
 public function testGetTextSqlOperationContaining()
 {
     $operatorExpected = 'containing';
     foreach (self::$crud as $key => $operation) {
         if ($operatorExpected !== $key) {
             continue;
         }
         foreach ($operation as $param => $conditionPortion) {
             $sql = Operations::getTextSqlOperation(new Portion($conditionPortion));
             $this->assertEquals($sql, Text::uncamelize($param) . ' LIKE :' . $param . ':', 'getTextSqlOperation create expected sql text');
         }
     }
 }
 private static function getColumnName(Portion $portion)
 {
     $columnName = $portion->getColumnName();
     return Text::uncamelize($columnName);
 }