Bitrix API

Columns implements IteratorAggregate, Countable

Columns collections.

The main task is to work with columns: reading, filtering and generating a select statement.

Tags
see
DataProvider
see
Grid

method createColumns

Table of Contents

Interfaces

IteratorAggregate
Countable

Methods

__construct()  : mixed
count()  : int
getColumn()  : Column|null
Column by id.
getColumns()  : array<string|int, Column>
Columns.
getIterator()  : array<string|int, Column>
getSelect()  : array<string|int, string>
Gets a list of select names for the specified columns.
prepareEditableColumnsValues()  : array<string|int, mixed>
Returns only those values that are present in the column collection and are editable.

Methods

count()

public final count() : int
Tags
inheritDoc
Return values
int

getColumn()

Column by id.

public final getColumn(string $id) : Column|null
Parameters
$id : string
Return values
Column|null

getColumns()

Columns.

public final getColumns() : array<string|int, Column>

Recommended to use the collection as an iterator, instead of this method:

$columns = new Columns(...);
foreach ($columns as $column)
{
# code...
}
Return values
array<string|int, Column>

getIterator()

public final getIterator() : array<string|int, Column>
Tags
inheritDoc
Return values
array<string|int, Column>

getSelect()

Gets a list of select names for the specified columns.

public getSelect([array<string|int, string>|null $columnIds = null ][, array<string|int, string>|null $providers = null ]) : array<string|int, string>

Single column can use multiple fields in a query. Necessary columns will also be returned, even if they are not specified in the arguments (taking into account filtering by providers).

All columns of all providers:

$ormSelect = $columns->getSelect();

Filter by columns (typical usage: show only visible columns):

$ormSelect = $columns->getSelect(
$grid->getVisibleColumnsIds()
);

Filter by providers (for example: grid contains columns from different tablets):

$elementSelect = $columns->getSelect(null, [
\Bitrix\Iblock\Grid\Column\ElementProvider::class,
\Bitrix\Iblock\Grid\Column\ElementPropertyProvider::class,
]);

$catalogSelect = $columns->getSelect(null, [
\Bitrix\Catalog\Grid\Column\ProductProvider::class,
\Bitrix\Catalog\Grid\Column\PriceProvider::class,
]);

And both filters:

$elementSelect = $columns->getSelect(
$grid->getVisibleColumnsIds(),
[
\Bitrix\Iblock\Grid\Column\ElementProvider::class,
\Bitrix\Iblock\Grid\Column\ElementPropertyProvider::class,
]
);
Parameters
$columnIds : array<string|int, string>|null = null

if is null, returns all columns.

$providers : array<string|int, string>|null = null

array with provider's class full names. If filled in, the columns will be taken only from the specified providers. ATTENTION: necessary columns from other providers will NOT BE INCLUDED in the result!

Return values
array<string|int, string>

prepareEditableColumnsValues()

Returns only those values that are present in the column collection and are editable.

public prepareEditableColumnsValues(array<string|int, mixed> $values) : array<string|int, mixed>
Parameters
$values : array<string|int, mixed>
Return values
array<string|int, mixed>

        
On this page

Search results