0 关注者

类 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 构造函数。

public void __construct ( $value, $type null, $dimension 1 )
$value 数组|yii\db\QueryInterface|混合类型

数组内容。可以表示为值的数组或返回这些值的查询。单个值将被视为包含一个元素的数组。

$type 字符串|null

数组元素的类型。默认为 null,表示类型未明确指定。如果未明确指定类型并且 DBMS 无法从上下文中推断出类型,则会引发 SQL 错误。

$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;
}

            
count() 公共方法 (自 2.0.14 版本起可用)

计算对象元素个数

public 整数 count ( )
返回值 整数

自定义计数,表示为整数。

返回值被强制转换为整数。

                #[\ReturnTypeWillChange]
public function count()
{
    return count($this->value);
}

            
getDimension() 公共方法

public 整数 getDimension ( )
返回值 整数

选择元素所需的索引数

                public function getDimension()
{
    return $this->dimension;
}

            
getIterator() 公共方法 (自 2.0.14.1 版本起可用)

检索外部迭代器

public Traversable getIterator ( )
返回值 Traversable

实现 IteratorTraversable 接口的对象实例

抛出异常 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);
}

            
getType() 公共方法

public 字符串|null getType ( )

                public function getType()
{
    return $this->type;
}

            
getValue() 公共方法

public 数组|混合类型|yii\db\QueryInterface getValue ( )

                public function getValue()
{
    return $this->value;
}

            
offsetExists() 公共方法 (自版本 2.0.14 起可用)

判断偏移量是否存在

public boolean offsetExists ( $offset )
$offset 混合类型

要检查的偏移量。

返回值 布尔值

成功时返回 true,失败时返回 false。

如果返回非布尔值,则返回值将被强制转换为布尔值。

                #[\ReturnTypeWillChange]
public function offsetExists($offset)
{
    return isset($this->value[$offset]);
}

            
offsetGet() 公共方法 (自版本 2.0.14 起可用)

检索偏移量

public 混合类型 offsetGet ( $offset )
$offset 混合类型

要检索的偏移量。

返回值 混合类型

可以返回所有值类型。

                #[\ReturnTypeWillChange]
public function offsetGet($offset)
{
    return $this->value[$offset];
}

            
offsetSet() 公共方法 (自版本 2.0.14 起可用)

设置偏移量

public void offsetSet ( $offset, $value )
$offset 混合类型

要为其赋值的偏移量。

$value 混合类型

要设置的值。

                #[\ReturnTypeWillChange]
public function offsetSet($offset, $value)
{
    $this->value[$offset] = $value;
}

            
offsetUnset() 公共方法 (自版本 2.0.14 起可用)

取消设置偏移量

public void offsetUnset ( $offset )
$offset 混合类型

要取消设置的偏移量。

                #[\ReturnTypeWillChange]
public function offsetUnset($offset)
{
    unset($this->value[$offset]);
}