Bitrix\Main\FileTable — ORM-класс нового ядра D7, предназначенный для работы с данными файлов в таблице b_file системы 1С-Битрикс.
Класс является современным аналогом части функциональности старого класса CFile и позволяет работать с файлами через ORM-механизм D7.
Основные возможности Bitrix\Main\FileTable
С помощью Bitrix\Main\FileTable можно:
- получать информацию о файлах;
- искать файлы по идентификатору;
- получать список файлов;
- фильтровать результаты выборки;
- сортировать файлы;
- выбирать необходимые поля;
- выполнять ORM-запросы к таблице
b_file.
Подключение класса
Для использования FileTable необходимо подключить класс:
use Bitrix\Main\FileTable;
Нужна помощь с Битрикс?
Получение файла по ID
Получить данные конкретного файла можно с помощью метода getById():
use Bitrix\Main\FileTable;
$file = FileTable::getById(123)->fetch();
print_r($file);
В результате будет возвращен массив с информацией о файле, хранящейся в таблице b_file.
Получение списка файлов
Для получения списка файлов используется ORM-метод getList():
use Bitrix\Main\FileTable;
$result = FileTable::getList([
'select' => [
'ID',
'NAME',
'FILE_SIZE',
'CONTENT_TYPE'
],
]);
while ($file = $result->fetch()) {
print_r($file);
}
Фильтрация файлов
При необходимости можно использовать фильтр:
use Bitrix\Main\FileTable;
$result = FileTable::getList([
'select' => [
'ID',
'NAME',
'FILE_SIZE'
],
'filter' => [
'=ID' => 123
],
]);
$file = $result->fetch();
Фильтр поддерживает стандартные условия ORM D7, что позволяет создавать более сложные запросы к данным файлов.
Выборка и сортировка файлов
При работе с большим количеством файлов можно использовать select, filter и order:
use Bitrix\Main\FileTable;
$result = FileTable::getList([
'select' => [
'ID',
'NAME',
'SUBDIR',
'FILE_SIZE',
'CONTENT_TYPE'
],
'filter' => [
'>FILE_SIZE' => 1024 * 1024
],
'order' => [
'ID' => 'DESC'
]
]);
while ($file = $result->fetch()) {
print_r($file);
}
Таким образом можно получать, например, файлы определенного размера, сортировать результаты и ограничивать набор возвращаемых данных.
Отличие FileTable от CFile
Bitrix\Main\FileTable не является полной заменой класса CFile.
CFile — класс старого ядра Битрикс, содержащий большое количество методов для работы с файлами и изображениями.
Bitrix\Main\FileTable — ORM-класс D7, основная задача которого заключается в работе с данными файловой таблицы через современный ORM API.
Поэтому механически заменять все вызовы CFile на FileTable не следует. Эти классы имеют разное назначение и набор возможностей.
Когда использовать Bitrix\Main\FileTable
FileTable удобно использовать при разработке нового кода на D7, когда требуется выполнять ORM-запросы к данным файлов.
Если проект использует старое ядро Битрикс и в нем уже применяется CFile, менять рабочий код только ради перехода на D7 обычно нет необходимости.
При разработке нового функционала на D7 предпочтительно использовать современные классы ORM, если задача связана именно с получением и выборкой данных файлов.
CFile или FileTable?
| API | Назначение |
|---|---|
CFile |
Работа с файлами и изображениями через старое ядро Битрикс |
Bitrix\Main\FileTable |
ORM-доступ к данным файловой таблицы |
| D7 ORM | Современный способ выполнения запросов к данным Битрикс |
Итог
Bitrix\Main\FileTable — класс D7 для ORM-работы с данными файлов в таблице b_file. Он особенно полезен при разработке нового функционала на D7, когда необходимо получать, фильтровать и сортировать данные файлов с использованием ORM.
Для полноценной работы с файлами и изображениями в Битрикс также могут использоваться другие классы и функции API. Поэтому FileTable следует рассматривать не как полную замену CFile, а как современный ORM-инструмент для работы с файловыми данными.