Middle ORM D7 Обязательно

Создание сущности: поля, типы, валидаторы

Карта полей собирается из объектов скалярных типов (IntegerField, StringField, DatetimeField), для которых настраиваются первичные ключи, автоинкремент и значения по умолчанию. Для проверки корректности данных к полям подключаются валидаторы через метод addValidator(), а чувствительные данные шифруются с помощью CryptoField.

Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.

Что нужно понимать

  • 1
    Описание полей
  • 2
    Типы полей
  • 3
    Валидаторы
  • 4
    Валидаторы ORM
  • 5
    Кастомные валидаторы
  • 6
    Сообщения об ошибках

Материалы

Проверь себя

Поле TOKEN перевели на CryptoField, и поиск where('TOKEN', $token) перестал находить записи. Почему?

В базе лежит шифртекст, и сравнение идёт с ним, а не с исходным значением. По CryptoField нельзя ни фильтровать, ни сортировать; для поиска храните рядом отдельное поле с хешем.

Обязательное поле не передали в update(), а результат успешный. Это баг?

Нет. DataManager::checkFields() на обновлении проверяет required только для ключей, которые пришли в данных и оказались пустыми. Отсутствие ключа означает «не трогать поле». Пустая строка в переданном ключе — ошибка BX_EMPTY_REQUIRED.

Заказчик жалуется, что в базе появились записи с ISBN из букв, хотя в поле есть validation с RegExp. Где искать?

Проверьте форму параметра: validation — это callback, возвращающий массив валидаторов, а не сам массив. Массив вместо функции ядро молча проигнорирует. Надёжнее вешать проверки через addValidator() на объект поля.

Чем атрибут #[Email] из Bitrix Main Validation отличается от валидатора поля ORM?

Это разные механизмы. Атрибуты проверяют DTO и параметры действий контроллера через ValidationService до вызова действия. Валидаторы ORM живут в карте поля и срабатывают внутри add() и update(). Сущность не знает про атрибуты, контроллер — про валидаторы полей.

Не сходится?

Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти