Think\Db\Query::getOptions PHP Method

getOptions() public method

获取当前的查询参数
public getOptions ( string $name = '' ) : mixed
$name string 参数名
return mixed
    public function getOptions($name = '')
    {
        if ('' === $name) {
            return $this->options;
        } else {
            return isset($this->options[$name]) ? $this->options[$name] : null;
        }
    }

Usage Example

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;
 }
All Usage Examples Of Think\Db\Query::getOptions