Columns implements IteratorAggregate, Countable
Columns collections.
The main task is to work with columns: reading, filtering and generating a select
statement.
Tags
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
__construct()
public
__construct(DataProvider ...$providers) : mixed
Parameters
- $providers : DataProvider
count()
public
final count() : int
Tags
Return values
intgetColumn()
Column by id.
public
final getColumn(string $id) : Column|null
Parameters
- $id : string
Return values
Column|nullgetColumns()
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
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>