getOptions() public method

获取当前的查询参数
public getOptions ( string $name = '' ) : mixed
$name string 参数名
return mixed
Exemplo n.º 1
0
 /**
  * 生成查询条件SQL
  * @access public
  * @param mixed $where
  * @return string
  */
 public function buildWhere($where, $table)
 {
     if (empty($where)) {
         $where = [];
     }
     if ($where instanceof Query) {
         return $this->buildWhere($where->getOptions('where'), $table);
     }
     $whereStr = '';
     // 获取字段信息
     $fields = $this->query->getTableInfo($table, 'fields');
     $binds = $this->query->getTableInfo($table, 'bind');
     foreach ($where as $key => $val) {
         $str = [];
         foreach ($val as $field => $value) {
             if ($fields && in_array($field, $fields, true) && is_scalar($value) && !$this->query->isBind($field)) {
                 $this->query->bind($field, $value, isset($binds[$field]) ? $binds[$field] : PDO::PARAM_STR);
                 $value = ':' . $field;
             }
             if ($value instanceof \Closure) {
                 // 使用闭包查询
                 $query = new Query($this->connection);
                 call_user_func_array($value, [&$query]);
                 $str[] = ' ' . $key . ' ( ' . $this->buildWhere($query->getOptions('where'), $table) . ' )';
             } else {
                 if (strpos($field, '|')) {
                     // 不同字段使用相同查询条件(OR)
                     $array = explode('|', $field);
                     $item = [];
                     foreach ($array as $k) {
                         $item[] = $this->parseWhereItem($k, $value);
                     }
                     $str[] = ' ' . $key . ' ( ' . implode(' OR ', $item) . ' )';
                 } elseif (strpos($field, '&')) {
                     // 不同字段使用相同查询条件(AND)
                     $array = explode('&', $field);
                     $item = [];
                     foreach ($array as $k) {
                         $item[] = $this->parseWhereItem($k, $value);
                     }
                     $str[] = ' ' . $key . ' ( ' . implode(' AND ', $item) . ' )';
                 } else {
                     // 对字段使用表达式查询
                     $field = is_string($field) ? $field : '';
                     $str[] = ' ' . $key . ' ' . $this->parseWhereItem($field, $value, $key);
                 }
             }
         }
         $whereStr .= empty($whereStr) ? substr(implode(' ', $str), strlen($key) + 1) : implode(' ', $str);
     }
     return $whereStr;
 }
Exemplo n.º 2
0
 /**
  * 生成查询条件SQL
  * @access public
  * @param mixed     $where
  * @param array     $options
  * @return string
  */
 public function buildWhere($where, $options)
 {
     if (empty($where)) {
         $where = [];
     }
     if ($where instanceof Query) {
         return $this->buildWhere($where->getOptions('where'), $options);
     }
     $whereStr = '';
     $binds = $this->query->getFieldsBind($options);
     foreach ($where as $key => $val) {
         $str = [];
         foreach ($val as $field => $value) {
             if ($value instanceof \Closure) {
                 // 使用闭包查询
                 $query = new Query($this->connection);
                 call_user_func_array($value, [&$query]);
                 $str[] = ' ' . $key . ' ( ' . $this->buildWhere($query->getOptions('where'), $options) . ' )';
             } elseif (strpos($field, '|')) {
                 // 不同字段使用相同查询条件(OR)
                 $array = explode('|', $field);
                 $item = [];
                 foreach ($array as $k) {
                     $item[] = $this->parseWhereItem($k, $value, '', $options, $binds);
                 }
                 $str[] = ' ' . $key . ' ( ' . implode(' OR ', $item) . ' )';
             } elseif (strpos($field, '&')) {
                 // 不同字段使用相同查询条件(AND)
                 $array = explode('&', $field);
                 $item = [];
                 foreach ($array as $k) {
                     $item[] = $this->parseWhereItem($k, $value, '', $options, $binds);
                 }
                 $str[] = ' ' . $key . ' ( ' . implode(' AND ', $item) . ' )';
             } else {
                 // 对字段使用表达式查询
                 $field = is_string($field) ? $field : '';
                 $str[] = ' ' . $key . ' ' . $this->parseWhereItem($field, $value, $key, $options, $binds);
             }
         }
         $whereStr .= empty($whereStr) ? substr(implode(' ', $str), strlen($key) + 1) : implode(' ', $str);
     }
     return $whereStr;
 }