- Получаем класс сущности
- Получаем названия полей
- Получаем количество элементов
- Фильтр со сложной логикой
- getList
- add
- update
- delete
<?
use \Bitrix\Main\Loader,
\Bitrix\Highloadblock\HighloadBlockTable,
\Bitrix\Main\Entity;
Loader::includeModule("highloadblock");
$hlblockId = 3;
// Получаем массив данных о Highloadblock
$arHlblock = HighloadBlockTable::getById($hlblockId)->fetch();
/*
Array
(
[ID] => 3
[NAME] => BrandReference
[TABLE_NAME] => eshop_brand_reference
)
*/
$obEntity = HighloadBlockTable::compileEntity($arHlblock);
/*
Bitrix\Main\ORM\Entity Object
(
[className:protected] => \BrandReferenceTable
[module:protected] =>
[name:protected] => BrandReference
[connectionName:protected] => default
[dbTableName:protected] => eshop_brand_reference
...
*/
$entityClass = $obEntity->getDataClass(); // (string) \BrandReferenceTable
$obEntity->getFields();
// Получаем ассоциативный массив, где ключи - это поля highload-блока, а значения — объекты, соответствующие типу поля
array (size=9)
'ID' =>
object(Bitrix\Main\ORM\Fields\IntegerField)[80]
protected 'is_primary' => boolean true
protected 'is_unique' => boolean false
...
'UF_NAME' =>
object(Bitrix\Main\ORM\Fields\StringField)[85]
protected 'format' => null
protected 'size' => null
...
$cnt = $entityClass::getCount();
Получить цвета, имена которых начинаются на С или К.
$rsData = $entityClass::getList([
'select' => array('*'),
'filter' => array(
array(
"LOGIC"=>"OR",
["UF_NAME" => 'с%'],
["UF_NAME" => 'к%']
)
)
]);
while ($el = $rsData->fetch())
var_dump($el);
По умолчанию логика фильтра — AND
, описанный выше фильтр пример логики — OR
. Пример посложнее от Антипова Андрея.
$rsData = $entityClass::getList([
"select" => array("*"),
"order" => array("ID" => "ASC"),
"filter" => array(
">UF_ID" => "20",
"!UF_DESCRIPTION" => false,
"%UF_XML_ID" => "company",
),
"limit" => 10,
]);
while ($arData = $rsData->fetch()) {
var_dump($arData);
/*
array (size=3)
'ID' => string '1' (length=1)
'UF_NAME' => string 'Фэшн хаус' (length=17)
'UF_XML_ID' => string 'company1' (length=8)
*/
}
// Массив полей для добавления
$addData = array(
'UF_NAME' => 'Рам-пам-пам',
'UF_DESCRIPTION' => 'Какое-то описание',
'UF_SORT' => '100',
'UF_XML_ID' => 'company8',
"UF_DATA" => date("d.m.Y"),
);
$result = $entityClass::add($addData);
if ($result->isSuccess())
$ID = $result->getId(); // получаем ID созданного элемента хайлоадблока
else
$errors = $result->getErrorMessages(); // получаем сообщения об ошибках
/* Array
(
[0] => The value of "Date" is not a valid date or time.<br>
)
*/
// Массив полей для обновления
$updData = array(
"UF_NAME" => "Рам-пам-пам 1",
'UF_XML_ID' => 'company8',
);
$result = $entityClass::update(8, $updData);
if (!$result->isSuccess())
$errors = $result->getErrorMessages(); // получаем сообщения об ошибках
$entityClass::delete(8);