Получение данных из кастомной таблицы в Битрикс с помощью getList

от автора

в
Время чтения: 2 мин.

Для работы с кастомными (пользовательскими) таблицами в Битрикс используется класс \Bitrix\Main\Entity\DataManager. Вот как правильно сделать getList к кастомной таблице:

1. Создание класса для работы с кастомной таблицей

Сначала нужно создать класс, который будет описывать вашу таблицу:

<?php
namespace Vendor\Module\Table;

use Bitrix\Main\Entity;
use Bitrix\Main\ORM\Data\DataManager;

class CustomTable extends DataManager
{
    public static function getTableName()
    {
        return 'b_custom_table'; // имя вашей кастомной таблицы
    }

    public static function getMap()
    {
        return [
            new Entity\IntegerField('ID', [
                'primary' => true,
                'autocomplete' => true
            ]),
            new Entity\StringField('NAME'),
            new Entity\StringField('CODE'),
            new Entity\DatetimeField('DATE_CREATE'),
            // другие поля вашей таблицы
        ];
    }
}

2. Использование getList для получения данных

После создания класса можно использовать стандартные методы ORM Битрикса:

<?php
use Vendor\Module\Table\CustomTable;

// Получение списка элементов
$result = CustomTable::getList([
    'select' => ['ID', 'NAME', 'CODE'], // выбираемые поля
    'filter' => ['=ACTIVE' => 'Y'], // условия фильтрации
    'order' => ['ID' => 'DESC'], // сортировка
    'limit' => 10, // ограничение количества
]);

while ($item = $result->fetch()) {
    // обработка данных
    print_r($item);
}

3. Альтернативный вариант через CDBResult

Если вы не хотите создавать отдельный класс, можно использовать более простой подход:

<?php
global $DB;

$query = "SELECT * FROM b_custom_table WHERE ACTIVE = 'Y' ORDER BY ID DESC LIMIT 10";
$result = $DB->Query($query);

while ($item = $result->Fetch()) {
    // обработка данных
    print_r($item);
}

Важные моменты

  1. Для ORM-подхода (первый вариант) обязательно нужно правильно описать структуру таблицы в getMap()
  2. Имя класса должно соответствовать PSR-4 и располагаться в правильной директории
  3. Для сложных запросов можно использовать Query:
$query = CustomTable::query()
    ->setSelect(['ID', 'NAME'])
    ->setFilter(['>ID' => 10])
    ->setOrder(['NAME' => 'ASC']);
$result = $query->exec();

Выбор метода зависит от сложности вашего проекта и требований к коду. ORM-подход рекомендуется для новых проектов, так как он более современный и безопасный.


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Сколько будет 8 + 8?