• drupal sql 源码解析query.inc 文件


    query.inc 文件:

    sql语句:

     $this->condition($field);
    1707 line
    public function condition($field, $value = NULL, $operator = NULL) {
    if (!isset($operator)) {
    if (is_array($value)) {
    $operator = 'IN';
    }
    elseif (!isset($value)) {
    $operator = 'IS NULL';
    }
    else {
    $operator = '=';
    }
    }
    $this->conditions[] = array(
    'field' => $field,
    'value' => $value,
    'operator' => $operator,
    );

    $this->changed = TRUE;

    return $this;
    }

    这里会放到 $this->conditions[] 中

    $operator = $connection->mapConditionOperator($condition['operator']);

    mapConditionOperator 函数:

    protected function mapConditionOperator($operator) {
    // $specials does not use drupal_static as its value never changes.
    static $specials = array(
    'BETWEEN' => array('delimiter' => ' AND '),
    'IN' => array('delimiter' => ', ', 'prefix' => ' (', 'postfix' => ')'),
    'NOT IN' => array('delimiter' => ', ', 'prefix' => ' (', 'postfix' => ')'),
    'EXISTS' => array('prefix' => ' (', 'postfix' => ')'),
    'NOT EXISTS' => array('prefix' => ' (', 'postfix' => ')'),
    'IS NULL' => array('use_value' => FALSE),
    'IS NOT NULL' => array('use_value' => FALSE),
    // Use backslash for escaping wildcard characters.
    'LIKE' => array('postfix' => " ESCAPE '\\'"),
    'NOT LIKE' => array('postfix' => " ESCAPE '\\'"),
    // These ones are here for performance reasons.
    '=' => array(),
    '<' => array(),
    '>' => array(),
    '>=' => array(),
    '<=' => array(),
    );
    if (isset($specials[$operator])) {
    $return = $specials[$operator];
    }
    else {
    // We need to upper case because PHP index matches are case sensitive but
    // do not need the more expensive drupal_strtoupper because SQL statements are ASCII.
    $operator = strtoupper($operator);
    $return = isset($specials[$operator]) ? $specials[$operator] : array();
    }

    $return += array('operator' => $operator);

    return $return;
    这些应该是condition支持的吧


  • 相关阅读:
    Delphi中WebBbrowser的编程 转
    博客园设置目录
    iTerm
    python
    谷歌浏览器插件的导出导入
    Chapter10 属性
    WPF之Binding
    ASP.NET 路由系统
    Silverlight中使用Application.GetResourceStream方法加载资源时得到的总是null
    基于IoC的ControllerFactory
  • 原文地址:https://www.cnblogs.com/cbugs/p/7016515.html
Copyright © 2020-2023  润新知