Базовые операции с хайлоадблоками

Модуль расширенного управления меню для битрикс

Октябрь 19, 2017

Теги: Хайлоадблоки, ORM, Хранение данных

Работа с хайлоадблоками в битрикс - получение объекта, выборка данных, добавление, обновление, удаление.

Подключение модуля:


\Bitrix\Main\Loader::IncludeModule("highloadblock");

Получение объекта сущности хайлоадблока (Entity Data Class) по ID хайлоадблока:


$hlblock \Bitrix\Highloadblock\HighloadBlockTable::getById($HLBLOCK_ID)->fetch();

$entity \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($hlblock);
$entityDataClass $entity->getDataClass();

Получение ID хайлоадблока по названию сущности:


$result \Bitrix\Highloadblock\HighloadBlockTable::getList(array('filter'=>array('=NAME'=>"MyEntityName")));

if(
$row $result->fetch())
{
    
$HLBLOCK_ID $row["ID"];
}

Выборка данных по фильтру:


$result $entityDataClass::getList(array(

    
"select" => array("*"),
    
"order" => array("ID"=>"DESC"),
    
"filter" => Array("UF_USER_ID"=>4),
));
while (
$arRow $result->Fetch())
{
    
print_r($arRow);
}

Выборка данных по фильтру с указанием максимального количества:


$result $entityDataClass::getList(array(

    
"select" => array("ID","UF_URL"),
    
"order" => array("UF_USER_ID"=>"ASC"),
    
"filter" => Array("UF_USER_ID"=>4),
    
"limit" => 5,
));
while (
$arRow $result->Fetch())
{
    
print_r($arRow);
}

Получение количества элементов по фильтру:


$result $entityDataClass::getList(array(

    
'select' => array('CNT'),
    
'filter' => array('UF_ACTIVE'=>true),
    
'runtime' => array(
        new 
\Bitrix\Main\Entity\ExpressionField('CNT''COUNT(*)'),
    ),
));
if(
$arRow $result->Fetch())
    
$count $arRow['CNT'];

Использование ShortHand-функции для выборки элемента с идентификатором из переменной $ID:


$result $entityDataClass::getById($ID);

        
if(
$arRow $result->Fetch())
{
    
print_r($arRow);
}

Добавление элемента хайлоадблока:


$arFields = array (

    
'UF_USER_ID' => $userID,
);
                
$result $entityDataClass::add($arFields);
                
if(
$result->isSuccess()) 
{                    
    
$ID $result->getId(); // получаем ID созданного элемента хайлоадблока

else 
{
    
$errors $result->getErrorMessages(); // получаем сообщения об ошибках
    /* $errors будет иметь следующий формат:
    Array
    (
        [0] => The value of "Date" is not a valid date or time.<br>
    )
    */
}

Обновление элемента хайлоадблока с идентификатором, содержащимся в переменной $ID:


$arFields = array (

    
'UF_USER_ID' => $userID,
);
                
$result $entityDataClass::update($ID,$arFields);

if(!
$result->isSuccess())
    
$errors $result->getErrorMessages(); // получаем сообщения об ошибках

Удаление элемента хайлоадблока с идентификатором, содержащимся в переменной $ID:


$result $entity_data_class::delete($ID);


if(!
$result->isSuccess())
    
$errors $result->getErrorMessages(); // получаем сообщения об ошибках

← Переход к списку