Главная » Разработка Битрикс » D7 » Bitrix\Main\FileTable — работа с файлами в Битрикс D7

Bitrix\Main\FileTable — работа с файлами в Битрикс D7

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-инструмент для работы с файловыми данными.

    Нужна помощь с Битрикс?

    Исправим ошибку, доработаем сайт, ускорим Битрикс или поможем разобраться с проблемой.

    Услуги
    Инструменты
    База знаний