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