QueryInterface
扩展 PreparableInterface, LimitableInterfaceJoomla 框架查询构建接口。
自 |
2.0.0 |
---|---|
包 |
Joomla 框架 |
方法
__toString
将查询对象转换为字符串。
__toString() :
自 |
2.0.0 |
---|
响应
字符串
alias
为当前查询添加别名。
alias( alias) :
用法:$query->select('*')->from('#__a')->alias('subquery');
自 |
2.0.0 |
---|
参数
- alias
string
用于 JDatabaseQuery 的别名。
响应
$this
bind
一种方法,用于将变量添加到将在查询执行之前绑定到准备好的 SQL 语句的内部数组中。
bind(array|string|int key, &value, array|string dataType = ParameterType::STRING, length, mixed||string|int driverOptions = []) :
自 |
1.0 |
---|
参数
- 键
array<string|int, mixed>|string|int
将在您的 SQL 查询中用于引用值的键。通常为 ':key' 格式,但也可能是整数。- 值
mixed
将绑定的值。它可以是数组,在这种情况下,它必须与 $key 的长度相同;该值通过引用传递,以支持输出参数,例如存储过程可能支持的输出参数。- 数据类型
array<string|int, mixed>|string
对应于 SQL 数据类型的常量。它可以是数组,在这种情况下,它必须与 $key 的长度相同。- length
int
变量的长度。通常需要用于输出参数。- 驱动程序选项
array<string|int, mixed>
要使用的可选驱动程序选项。
响应
$this
bindArray
绑定一组值并返回一组准备好的参数名称。
bindArray(mixed||string|int values, array|string dataType = ParameterType::INTEGER) : mixed||string|int
请注意,所有值都必须是相同的数据类型。
用法:$query->whereIn('column in (' . implode(',', $query->bindArray($keyValues, $dataType)) . ')');
自 |
2.0.0 |
---|
参数
- values
array<string|int, mixed>
要绑定的值- 数据类型
array<string|int, mixed>|string
对应于 SQL 数据类型的常量。它可以是数组,在这种情况下,它必须与 $key 的长度相同。
响应
array<string|int, mixed>
带有参数名称的数组
call
向查询的 CALL 子句中添加单个列或一组列。
call(array|string columns) :
用法:$query->call('a.')->call('b.id'); $query->call(array('a.', 'b.id'));
自 |
2.0.0 |
---|---|
抛出 |
|
参数
- columns
array<string|int, mixed>|string
字符串或一组字段名称。
响应
$this
castAs
将值转换为指定类型。
castAs( type, value, length = null) :
确保在传递给方法之前正确地引用该值。
用法:$query->select($query->castAs('CHAR', 'a'));
自 |
2.0.0 |
---|---|
抛出 |
|
参数
- 类型
string
要转换成的字符串类型。- 值
string
要转换成的字符的值。- length
string
可选地指定字段的长度(如果类型支持,否则忽略)。
响应
string
将值转换成的字符类型的 SQL 语句。
charLength
获取字符串中的字符数。
charLength( field, string|null operator = null, string|null condition = null) :
注意,使用 'length' 来查找字符串中的字节数。
用法:$query->select($query->charLength('a'));
自 |
2.0.0 |
---|
参数
- 字段
string
一个值。- 操作符
string|null
charLength 整数值和 $condition 之间的比较运算符- 条件
string|null
要与 charLength 进行比较的整数值。
响应
string
用于获取字符长度的 SQL 语句。
clear
清除查询或查询的特定子句中的数据。
clear( clause = null) :
自 |
2.0.0 |
---|
参数
- 子句
string
可选地,要清除的子句的名称,或者不指定任何内容以清除整个查询。
响应
$this
columns
添加将用于 INSERT INTO 语句的单个列或一组列名称。
columns(array|string columns) :
自 |
2.0.0 |
---|
参数
- columns
array<string|int, mixed>|string
一个列名称或一组列名称。
响应
$this
concatenate
连接一组列名称或值。
concatenate(string||string|int values, string|null separator = null) :
用法:$query->select($query->concatenate(array('a', 'b')));
自 |
2.0.0 |
---|
参数
- values
array<string|int, string>
要连接的值的数组。- 分隔符
string|null
作为要放在每个值之间的分隔符。
响应
string
表示连接值的 SQL 语句。
currentTimestamp
获取当前日期和时间。
currentTimestamp() :
用法:$query->where('published_up < '.$query->currentTimestamp());
自 |
2.0.0 |
---|
响应
string
用于获取当前时间戳的 SQL 语句。
day
用于获取从日期列中提取日子的字符串。
day( date) :
用法:$query->select($query->day($query->quoteName('dateColumn')));
自 |
2.0.0 |
---|
参数
- 日期
string
包含要提取的日的日期列。
响应
string
用于从日期值中获取日的 SQL 语句。
delete
向查询的 DELETE 子句中添加表名。
delete( table = null) :
用法:$query->delete('#__a')->where('id = 1');
自 |
2.0.0 |
---|---|
抛出 |
|
参数
- 表
string
要从中删除数据的表的名称。
响应
$this
exec
向查询的 EXEC 子句中添加单个列或一组列。
exec(array|string columns) :
用法:$query->exec('a.')->exec('b.id'); $query->exec(array('a.', 'b.id'));
自 |
2.0.0 |
---|---|
抛出 |
|
参数
- columns
array<string|int, mixed>|string
字符串或一组字段名称。
响应
$this
extendWhere
使用可能与当前 WHERE 子句中使用的逻辑运算符不同的逻辑运算符,使用单个条件或一组条件扩展 WHERE 子句。
extendWhere( outerGlue, conditions, innerGlue = 'AND') :
用法:$query->where(array('a = 1', 'b = 2'))->extendWhere('XOR', array('c = 3', 'd = 4')); 将生成:WHERE ((a = 1 AND b = 2) XOR (c = 3 AND d = 4)
自 |
2.0.0 |
---|
参数
- 外部粘合剂
string
用于将条件连接到当前 WHERE 条件的粘合剂。- 条件
mixed
字符串或一组 WHERE 条件。- 内部粘合剂
string
用于连接条件的粘合剂。默认为 AND。
响应
$this
findInSet
在像集合一样使用的 varchar 中查找值。
findInSet( value, set) :
确保在传递给方法之前,该值是整数。
用法:$query->findInSet((int) $parent->id, 'a.assigned_cat_ids')
自 |
2.0.0 |
---|
参数
- 值
string
要搜索的值。- set
string
值的集合。
响应
string
用于驱动程序的 MySQL find_in_set() 函数的表示形式。
from
向查询的 FROM 子句中添加表。
from(string|\Joomla\Database\QueryInterface table) :
用法:$query->select('')->from('#__a'); $query->select('')->from($subquery->alias('a'));
自 |
2.0.0 |
---|
参数
- 表
string|QueryInterface
表的名称或具有已设置别名的 QueryInterface 对象(或其子对象)。
响应
$this
getBounded
当键为空时检索绑定的参数数组并通过引用返回它。如果提供了键,则返回该项。
getBounded( key = null) :
自 |
1.0 |
---|
参数
- 键
mixed
要检索的绑定的变量键。
响应
混合
group
向查询的 GROUP 子句中添加分组列。
group(array|string columns) :
用法:$query->group('id');
自 |
2.0.0 |
---|
参数
- columns
array<string|int, mixed>|string
字符串或一组排序列。
响应
$this
groupConcat
聚合函数,用于将输入值连接成字符串,并以分隔符分隔。
groupConcat( expression, separator = ',') :
用法:$query->groupConcat('id', ',');
自 |
2.0.0 |
---|
参数
- 表达式
string
要应用连接的表达式,它可以是列名或复杂的 SQL 语句。- 分隔符
string
每个连接值的定界符。
响应
string
输入值连接成字符串,并以分隔符分隔。
having
查询的 HAVING 子句的条件。
having(array|string conditions, glue = 'AND') :
用法:$query->group('id')->having('COUNT(id) > 5');
自 |
2.0.0 |
---|
参数
- 条件
array<string|int, mixed>|string
字符串或一组列。- 粘合剂
string
用于连接条件的粘合剂。默认为 AND。
响应
$this
hour
用于获取从日期列中提取小时的字符串。
hour( date) :
用法:$query->select($query->hour($query->quoteName('dateColumn')));
自 |
2.0.0 |
---|
参数
- 日期
string
包含要提取的小时的日期列。
响应
string
用于从日期/时间值中获取小时的 SQL 语句。
insert
向查询的 INSERT 子句中添加表名。
insert( table, incrementField = false) :
用法:$query->insert('#__a')->set('id = 1'); $query->insert('#__a')->columns('id, title')->values('1,2')->values('3,4'); $query->insert('#__a')->columns('id, title')->values(array('1,2', '3,4'));
自 |
2.0.0 |
---|---|
抛出 |
|
参数
- 表
string
要将数据插入的表的名称。- 增量字段
bool
要自动递增的字段的名称。
响应
$this
isNullDatetime
生成一个 SQL 语句,用于检查列是否表示零或空日期时间。
isNullDatetime( column) :
用法:$query->where($query->isNullDatetime('modified_date'));
自 |
2.0.0 |
---|
参数
- 列
string
一个列名称。
响应
字符串
join
向查询中添加 JOIN 子句。
join( type, table, condition = null) :
用法:$query->join('INNER', 'b', 'b.id = a.id);
自 |
2.0.0 |
---|
参数
- 类型
string
连接的类型。此字符串将添加到 JOIN 关键字之前。- 表
string
表的名称。- 条件
string
连接条件。
响应
$this
length
获取字符串的字节长度。
length( value) :
注意,使用 'charLength' 来查找字符串中的字符数。
用法:query->where($query->length('a').' > 3');
自 |
2.0.0 |
---|
参数
- 值
string
要测量的字符串。
响应
整数
minute
用于获取从日期列中提取分钟的字符串。
minute( date) :
用法:$query->select($query->minute($query->quoteName('dateColumn')));
自 |
2.0.0 |
---|
参数
- 日期
string
包含要提取的分钟的日期列。
响应
string
从日期/时间值中获取分钟的 SQL 语句。
month
用于获取从日期列中提取月份的字符串。
month( date) :
用法:$query->select($query->month($query->quoteName('dateColumn')));
自 |
2.0.0 |
---|
参数
- 日期
string
包含要提取的月份的日期列。
响应
string
从日期值中获取月份的 SQL 语句。
nullDate
获取数据库驱动程序的日期时间戳的空值或零值表示形式。
nullDate( quoted = true) :
此方法提供用于将查询对象传递给函数以进行修改的情况。如果您直接访问数据库对象,建议您直接使用 nullDate 方法。
用法:$query->where('modified_date <> '.$query->nullDate());
自 |
2.0.0 |
---|---|
抛出 |
|
参数
- quoted
bool
可选地将空日期包含在数据库引号中(默认值为 true)。
响应
string
日期时间戳的空值或零值表示形式。
order
向查询的 ORDER 子句添加排序列。
order(array|string columns) :
用法:$query->order('foo')->order('bar'); $query->order(array('foo','bar'));
自 |
2.0.0 |
---|
参数
- columns
array<string|int, mixed>|string
字符串或一组排序列。
响应
$this
processLimit
用于修改字符串格式的查询的方法,通过添加必要的项来使查询限制在特定数量的结果,或从特定偏移量开始。
processLimit( query, limit, offset) :
自 |
1.0 |
---|
参数
- query
string
字符串格式的查询。- limit
int
结果集的限制。- offset
int
结果集的偏移量。
响应
字符串
querySet
将单个查询设置为查询集。
querySet(\Joomla\Database\DatabaseQuery|string query) :
在您这种类型的 DatabaseQuery 中,您可以使用 union()、unionAll()、order() 和 setLimit()。
用法:$query->querySet($query2->select('name')->from('#__foo')->order('id DESC')->setLimit(1)) ->unionAll($query3->select('name')->from('#__foo')->order('id')->setLimit(1)) ->order('name') ->setLimit(1)
自 |
2.0.0 |
---|
参数
- query
DatabaseQuery|string
DatabaseQuery 对象或字符串。
响应
$this
quoteName
将 SQL 语句标识符名称(如列名、表名或数据库名)括在引号中,以防止注入风险和保留字冲突。
quoteName(array|string name, array|string as = null) : array|string
此方法提供用于将查询对象传递给函数以进行修改的情况。如果您直接访问数据库对象,建议您直接使用 quoteName 方法。
请注意,“qn”是此方法的别名,与 DatabaseDriver 中的别名相同。
用法:$query->quoteName('#__a'); $query->qn('#__a');
自 |
1.0 |
---|---|
抛出 |
|
参数
- name
array<string|int, mixed>|string
要包含在引号中的标识符名称,或要包含在引号中的标识符名称数组。每种类型都支持点符号名称。- as
array<string|int, mixed>|string
与 $name 关联的 AS 查询部分。它可以是字符串或数组,如果是后者,则必须与 $name 的长度相同;如果是 null,则字符串或数组元素不会有任何 AS 部分。
响应
array<string|int, mixed>|string
包含引号的名称,与 $name 类型相同。
rand
获取返回随机浮点值的函数。
rand() :
用法:$query->rand();
自 |
2.0.0 |
---|
响应
字符串
regexp
获取正则表达式运算符。
regexp( value) :
用法:$query->where('field ' . $query->regexp($search));
自 |
2.0.0 |
---|
参数
- 值
string
正则表达式模式。
响应
字符串
second
用于获取从日期列中提取秒数的字符串。
second( date) :
用法:$query->select($query->second($query->quoteName('dateColumn')));
自 |
2.0.0 |
---|
参数
- 日期
string
包含要提取的秒数的日期列。
响应
string
从日期/时间值中获取秒数的 SQL 语句。
select
向查询的 SELECT 子句添加单个列或列数组。
select(array|string columns) :
用法:$query->select('a.')->select('b.id'); $query->select(array('a.', 'b.id'));
自 |
2.0.0 |
---|---|
抛出 |
|
参数
- columns
array<string|int, mixed>|string
字符串或一组字段名称。
响应
$this
selectRowNumber
返回当前行的行号。
selectRowNumber( orderBy, orderColumnAlias) :
用法:$query->select('id'); $query->selectRowNumber('ordering,publish_up DESC', 'new_ordering'); $query->from('#__content');
自 |
2.0.0 |
---|---|
抛出 |
|
参数
- orderBy
string
窗口函数的排序表达式。- orderColumnAlias
string
新排序列的别名。
响应
$this
set
向查询的 SET 子句添加单个条件字符串或条件字符串数组。
set(array|string conditions, glue = ',') :
用法:$query->set('a = 1')->set('b = 2'); $query->set(array('a = 1', 'b = 2');
自 |
2.0.0 |
---|
参数
- 条件
array<string|int, mixed>|string
条件字符串或条件字符串数组。- 粘合剂
string
用于连接条件字符串的粘合剂。默认为,
。请注意,粘合剂在首次使用时设置,无法更改。
响应
$this
setLimit
设置结果集的偏移量和限制,如果数据库驱动程序支持。
setLimit( limit, offset) :
用法:$query->setLimit(100, 0); (检索 100 行,从第一条记录开始) $query->setLimit(50, 50); (检索 50 行,从第 50 条记录开始)
自 |
1.0 |
---|
参数
- limit
int
结果集的限制。- offset
int
结果集的偏移量。
响应
$this
toQuerySet
从当前查询创建类型为 querySet 的 DatabaseQuery 对象。
toQuerySet() : \Joomla\Database\DatabaseQuery
用法:$query->select('name')->from('#__foo')->order('id DESC')->setLimit(1) ->toQuerySet() ->unionAll($query2->select('name')->from('#__foo')->order('id')->setLimit(1)) ->order('name') ->setLimit(1)
自 |
2.0.0 |
---|
响应
DatabaseQuery
新的 DatabaseQuery 对象。
unbind
解除绑定绑定变量的方法。
unbind(array|string|int key) :
自 |
2.0.0 |
---|
参数
- 键
array<string|int, mixed>|string|int
要解除绑定的键或键数组。
响应
$this
union
将查询添加到当前查询的 UNION 中。
union(\Joomla\Database\DatabaseQuery|string query, distinct = true) :
用法:$query->union('SELECT name FROM #__foo') $query->union('SELECT name FROM #__foo', true)
自 |
1.0 |
---|
参数
- query
DatabaseQuery|string
要联合的 DatabaseQuery 对象或字符串。- distinct
bool
如果为 true,则仅从联合中返回不同的行。
响应
$this
unionAll
将查询添加到当前查询的 UNION ALL 中。
unionAll(\Joomla\Database\DatabaseQuery|string query) :
用法:$query->unionAll('SELECT name FROM #__foo')
see | union |
---|---|
自 |
1.5.0 |
参数
- query
DatabaseQuery|string
要联合的 DatabaseQuery 对象或字符串。
响应
$this
update
向查询的 UPDATE 子句添加表名。
update( table) :
用法:$query->update('#__foo')->set(...);
自 |
2.0.0 |
---|---|
抛出 |
|
参数
- 表
string
要更新的表。
响应
$this
values
添加一个元组或元组数组,这些元组或元组数组将用作 INSERT INTO 语句的值。
values(array|string values) :
用法:$query->values('1,2,3')->values('4,5,6'); $query->values(array('1,2,3', '4,5,6'));
自 |
2.0.0 |
---|
参数
- values
array<string|int, mixed>|string
单个元组或元组数组。
响应
$this
where
向查询的 WHERE 子句添加单个条件或条件数组。
where(array|string conditions, glue = 'AND') :
用法:$query->where('a = 1')->where('b = 2'); $query->where(array('a = 1', 'b = 2'));
自 |
2.0.0 |
---|
参数
- 条件
array<string|int, mixed>|string
where 条件的字符串或字符串数组。- 粘合剂
string
用于连接条件的粘合剂。默认为 AND。请注意,粘合剂在首次使用时设置,无法更改。
响应
$this
whereIn
向查询添加 WHERE IN 语句。
whereIn( keyName, mixed||string|int keyValues, array|string dataType = ParameterType::INTEGER) :
请注意,所有值都必须是相同的数据类型。
用法 $query->whereIn('id', [1, 2, 3]);
自 |
2.0.0 |
---|
参数
- keyName
string
where 子句的键名。- keyValues
array<string|int, mixed>
要匹配的值数组。- 数据类型
array<string|int, mixed>|string
与 SQL 数据类型对应的常量。它可以是数组,在这种情况下,它必须与 $keyValues 的长度相同。
响应
$this
whereNotIn
向查询添加 WHERE NOT IN 语句。
whereNotIn( keyName, mixed||string|int keyValues, array|string dataType = ParameterType::INTEGER) :
请注意,所有值都必须是相同的数据类型。
用法 $query->whereNotIn('id', [1, 2, 3]);
自 |
2.0.0 |
---|
参数
- keyName
string
where 子句的键名。- keyValues
array<string|int, mixed>
要匹配的值数组。- 数据类型
array<string|int, mixed>|string
与 SQL 数据类型对应的常量。它可以是数组,在这种情况下,它必须与 $keyValues 的长度相同。
响应
$this
year
用于获取从日期列中提取年份的字符串。
year( date) :
用法:$query->select($query->year($query->quoteName('dateColumn')));
自 |
2.0.0 |
---|
参数
- 日期
string
包含要提取的年份的日期列。
响应
string
从日期值中获取年份的 SQL 语句。