类 yii\db\ArrayExpression
继承关系 | yii\db\ArrayExpression |
---|---|
实现接口 | ArrayAccess, Countable, IteratorAggregate, yii\db\ExpressionInterface |
可用版本 | 2.0.14 |
源代码 | https://github.com/yiisoft/yii2/blob/master/framework/db/ArrayExpression.php |
类 ArrayExpression 表示一个数组 SQL 表达式。
这种类型的表达式也可以用于条件中
$query->andWhere(['@>', 'items', new ArrayExpression([1, 2, 3], 'integer')])
这将根据 DBMS 生成一个准备好的条件。例如,在 PostgreSQL 中,它将编译为 WHERE "items" @> ARRAY[1, 2, 3]::integer[]
。
公共方法
方法 | 描述 | 定义位置 |
---|---|---|
__construct() | ArrayExpression 构造函数。 | yii\db\ArrayExpression |
count() | 计算对象元素个数 | yii\db\ArrayExpression |
getDimension() | yii\db\ArrayExpression | |
getIterator() | 检索外部迭代器 | yii\db\ArrayExpression |
getType() | yii\db\ArrayExpression | |
getValue() | yii\db\ArrayExpression | |
offsetExists() | 判断偏移量是否存在 | yii\db\ArrayExpression |
offsetGet() | 检索偏移量 | yii\db\ArrayExpression |
offsetSet() | 设置偏移量 | yii\db\ArrayExpression |
offsetUnset() | 取消设置偏移量 | yii\db\ArrayExpression |
方法详情
ArrayExpression 构造函数。
public void __construct ( $value, $type = null, $dimension = 1 ) | ||
$value | 数组|yii\db\QueryInterface|混合类型 |
数组内容。可以表示为值的数组或返回这些值的查询。单个值将被视为包含一个元素的数组。 |
$type | 字符串|null |
数组元素的类型。默认为 |
$dimension | 整数 |
选择元素所需的索引数 |
public function __construct($value, $type = null, $dimension = 1)
{
if ($value instanceof self) {
$value = $value->getValue();
}
$this->value = $value;
$this->type = $type;
$this->dimension = $dimension;
}
计算对象元素个数
public 整数 count ( ) | ||
返回值 | 整数 |
自定义计数,表示为整数。 返回值被强制转换为整数。 |
---|
#[\ReturnTypeWillChange]
public function count()
{
return count($this->value);
}
public 整数 getDimension ( ) | ||
返回值 | 整数 |
选择元素所需的索引数 |
---|
public function getDimension()
{
return $this->dimension;
}
检索外部迭代器
public Traversable getIterator ( ) | ||
返回值 | Traversable |
实现 Iterator 或 Traversable 接口的对象实例 |
---|---|---|
抛出异常 | yii\base\InvalidConfigException |
当 ArrayExpression 包含 QueryInterface 对象时 |
#[\ReturnTypeWillChange]
public function getIterator()
{
$value = $this->getValue();
if ($value instanceof QueryInterface) {
throw new InvalidConfigException('The ArrayExpression class can not be iterated when the value is a QueryInterface object');
}
if ($value === null) {
$value = [];
}
return new \ArrayIterator($value);
}
public 数组|混合类型|yii\db\QueryInterface getValue ( ) |
public function getValue()
{
return $this->value;
}
判断偏移量是否存在
public boolean offsetExists ( $offset ) | ||
$offset | 混合类型 |
要检查的偏移量。 |
返回值 | 布尔值 |
成功时返回 true,失败时返回 false。 如果返回非布尔值,则返回值将被强制转换为布尔值。 |
---|
#[\ReturnTypeWillChange]
public function offsetExists($offset)
{
return isset($this->value[$offset]);
}
检索偏移量
public 混合类型 offsetGet ( $offset ) | ||
$offset | 混合类型 |
要检索的偏移量。 |
返回值 | 混合类型 |
可以返回所有值类型。 |
---|
#[\ReturnTypeWillChange]
public function offsetGet($offset)
{
return $this->value[$offset];
}
设置偏移量
public void offsetSet ( $offset, $value ) | ||
$offset | 混合类型 |
要为其赋值的偏移量。 |
$value | 混合类型 |
要设置的值。 |
#[\ReturnTypeWillChange]
public function offsetSet($offset, $value)
{
$this->value[$offset] = $value;
}
取消设置偏移量
public void offsetUnset ( $offset ) | ||
$offset | 混合类型 |
要取消设置的偏移量。 |
#[\ReturnTypeWillChange]
public function offsetUnset($offset)
{
unset($this->value[$offset]);
}
注册 或 登录 以发表评论。