Class yii\db\ArrayExpression

ImplementsArrayAccess, Countable, IteratorAggregate, yii\db\ExpressionInterface
Available since version2.0.14
Source Code

Class ArrayExpression represents an array SQL expression.

Expressions of this type can be used in conditions as well:

$query->andWhere(['@>', 'items', new ArrayExpression([1, 2, 3], 'integer')])

which, depending on DBMS, will result in a well-prepared condition. For example, in PostgreSQL it will be compiled to WHERE "items" @> ARRAY[1, 2, 3]::integer[].

Method Details

Hide inherited methods

__construct() public method

ArrayExpression constructor.

public void __construct ( $value, $type null, $dimension 1 )
$value array|yii\db\QueryInterface|mixed

The array content. Either represented as an array of values or a Query that returns these values. A single value will be considered as an array containing one element.

$type string|null

The type of the array elements. Defaults to null which means the type is not explicitly specified. In case when type is not specified explicitly and DBMS can not guess it from the context, SQL error will be raised.

$dimension integer

The number of indices needed to select an element

                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() public method (available since version 2.0.14)

Count elements of an object

public integer count ( )
return integer

The custom count as an integer.

The return value is cast to an integer.

public function count()
    return count($this->value);

getDimension() public method

public integer getDimension ( )
return integer

The number of indices needed to select an element

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

getIterator() public method (available since version

Retrieve an external iterator

public Traversable getIterator ( )
return Traversable

An instance of an object implementing Iterator or Traversable

throws yii\base\InvalidConfigException

when ArrayExpression contains QueryInterface object

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 method

public string|null getType ( )

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

getValue() public method

public array|mixed|yii\db\QueryInterface getValue ( )

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

offsetExists() public method (available since version 2.0.14)

Whether a offset exists

public boolean offsetExists ( $offset )
$offset mixed

An offset to check for.

return boolean

True on success or false on failure.

The return value will be casted to boolean if non-boolean was returned.

public function offsetExists($offset)
    return isset($this->value[$offset]);

offsetGet() public method (available since version 2.0.14)

Offset to retrieve

public mixed offsetGet ( $offset )
$offset mixed

The offset to retrieve.

return mixed

Can return all value types.

public function offsetGet($offset)
    return $this->value[$offset];

offsetSet() public method (available since version 2.0.14)

Offset to set

public void offsetSet ( $offset, $value )
$offset mixed

The offset to assign the value to.

$value mixed

The value to set.

public function offsetSet($offset, $value)
    $this->value[$offset] = $value;

offsetUnset() public method (available since version 2.0.14)

Offset to unset

public void offsetUnset ( $offset )
$offset mixed

The offset to unset.

public function offsetUnset($offset)