BP\u活动\u查询
类,用于为高级活动获取生成WHERE SQL子句。
描述
这是一种典型的应用BP_活动_活动::get()使用“filter\u query”参数。
来源
文件:bp活动/classes/class-bp-activity-query.php
类BP_Activity_Query扩展了BP_Recursive_Query{/***活动查询数组。**有关查询参数的信息,请参见{@See BP_Activity_Query::_construct()}.*@因为BuddyPress 2.2.0*@var Array*/public$querys=Array();/***表别名。**@自BuddyPress 2.2.0*@var string*/public$Table\u alias='';/***支持的数据库列。**请参阅'wp\u bp\u activity'数据库表架构。**@自BuddyPress 2.2.0*@var array*/public$DB\u columns=array('id','user_id','component','type','action','content','primary_link','item_id','secondary_item_id','hide_sitewide','is_spam',);/***构造函数。**@since-BuddyPress 2.2.0**@param-array$query{*查询子句数组。*@type-array{*@type string$列为必填项。要查询的列。基本上,主*“wp\U bp\U活动”表中的任何DB列。*@type string$值为必填项。筛选依据的值。*@type string$比较可选。比较运算符。默认值'='.*接受'='、'!='、'>'、'>='、'<'、'in'、'NOT in'、'LIKE'、*'NOT LIKE',BETWEEN',NOT BETWEEN',REGEXP',NOT REGEXP',RLIKE.*@type string$关系可选。活动查询之间的布尔关系。*接受'OR','AND'.Default'和'*@type数组{*可选。另一个完全格式的活动查询。请参阅上面的参数。*}*}***/公共函数{uu构造($query=array()){if(!is\u数组($query)){return;}$this->querys=$this->sanitize_query($query);}/***生成要附加到主查询的WHERE SQL子句。**@因为BuddyPress 2.2.0**@param string$alias是与当前查询子句兼容的现有表别名。*默认值:'a'.BP_Activity_Activity::get()使用“a”,因此我们默认为。*@return string SQL fragment追加到主WHERE子句。*/public function get_SQL($alias='a'){if(!empty($alias)){$this->table_alias=sanitize_title($alias);}$SQL=$this->get_SQL_子句();//我们只需要'WHERE'子句。////还需要修剪尾部的“AND”来自父BP_Recursive_Query类//的子句,因为我们的需要不需要它。返回preg_replace('/^\sAND/',''$sql['where']);}/***为一阶子句生成WHERE子句。**@自BuddyPress 2.2.0以来**@param array$子句属于该子句的参数数组。*@param array$parent_query子句所属的父查询。*@return array{*@type array$where where语句的子类数组。*@type array$join Empty array。未使用。**/protected函数get_sql_for_子句($子句,$parent_查询){global$wpdb;$sql_chunks=array('where'=>array(),'join'=>array(),);$column=ISET($column['column'])?$this->validate_column($column['column:“”;$value=isset($子句['value'])?$子句['value']:“”;if(空($column)| | |!isset($子句['value']){返回$sql_块;}if(isset($子句['compare']){$子句['compare']=strtoupper($子句['compare']);}否则{$子句['compare']=isset($子句['value'])和is_数组($子句['value'])IN:'='//如果找不到有效的运算符,则默认的“比较”为“=”。如果(!in_数组($clause['compare']),数组('='、'!='、'>'、'>='、'<'、'<='、'LIKE'、'NOT-in'、'BETWEEN'、'NOT-BETWEEN'、'REGEXP'、'NOT-REGEXP'、'RLIKE')){$clause['compare']、'compare'];别名=$clause['compare'];空($this->表别名)?”{$this->table_alias}.:'';//接下来,构建WHERE子句。$WHERE='';//Value.if(isset($子句['Value']){if(在_数组中($compare,array('in','NOT in','BETWEEN','NOT BETWEEN')){$Value=preg_split('/[,\s]+/',$Value);}}//Tinyint.if(!empty($column)&&true==在_数组中($column,array('hide_sitewide','is_spam')){$sql_chunks['where'][=$wpdb->prepare({$alias}{$column}=%d',$value);}else{switch($compare){//IN使用不同语法。case'IN':case'NOT IN':$IN_sql=BP_Activity_Activity::get_IN_操作符_sql({$alias}{$column},$value)/“NOT IN”运算符与字符串替换一样简单!if('NOT IN'===$compare){$IN_sql=str_replace('IN','NOT IN','IN_sql);}$sql_chunks['where']=$IN_sql;break;case'BETWEEN':case'NOT BETWEEN':$value=array_slice('value,0,2);$where=$wpdb->prepare('%s和%s',$value);break;case'LIKE':case'NOT LIKE':$value='%'.bp_esc_LIKE($value)。“%';$where=$wpdb->prepare('%s',$value);break;默认值:$where=$wpdb->prepare('%s',$value);break;}}}}if($where){$sql(chunks['where']=“{$alias}{$column}{$compare}{$where}”;}/**多个where子句应在括号内联接。*/if(1db_columns ) ) { return $column; } else { return ''; } } }
变更日志
版本 | 描述 |
---|---|
BuddyPress 2.2.0 | 介绍。 |
方法
- __构造-构造器。
- 获取sql-生成要附加到主查询的WHERE SQL子句。
- get_sql_for_子句-为一阶子句生成WHERE子句。
- 是第一顺序条款吗-确定子句是否为一阶。
- 验证列-验证列名参数。