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

Объекты и коллекции

Выборки через fetchObject() и fetchCollection() возвращают типизированные объекты и коллекции со сгенерированными геттерами и сеттерами. Объект отслеживает состояние полей (state), сохраняя через save() только фактически изменившиеся данные, а обращение к невыбранному полю через get() вернет null (или исключение при вызове require*).

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

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

  • 1
    Entity Objects
  • 2
    Работа с объектами
  • 3
    Сохранение изменений
  • 4
    EO_*_Collection
  • 5
    Итерация по коллекции
  • 6
    Массовые операции

Материалы

Официальная документация

Проверь себя

getTitle() у объекта возвращает null, хотя в базе значение есть. Где искать причину?

В select запроса: поле не выбрано, а get() для невыбранного поля отдаёт null без ошибки. Добавьте поле в setSelect(), дозагрузите через fill() или используйте requireTitle(), который бросит исключение вместо тихого null.

Заказчик жалуется, что после массовой правки через коллекцию половина строк не изменилась, а ошибок нет. Что проверить первым?

Результат save() коллекции — это Result, и его нужно проверять как любой другой. Кроме того, setTitle() с тем же значением не считается изменением и в запрос не попадает: строки, где значение уже совпадало, ORM честно пропустил.

filter() на коллекции бросил CollectionFilterException. Почему?

filter() работает только с неизменённой коллекцией: если до него объекты добавляли, удаляли или меняли, ORM отказывается фильтровать. Сначала отберите объекты, потом меняйте, а для перебора с изменением есть walk().

Чем BookTable::createObject() отличается от new EO_Book?

createObject() подставляет значения по умолчанию из карты и возвращает объект того класса, который задан в getObjectClass(), так что при появлении своего класса код не меняется. Имя EO_Book в коде документация использовать не советует.

Не сходится?

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

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

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

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

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

на связи

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

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

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

Войти