ORM ExpressionField делаем вычисления для объектов

Почему-то у меня есть такая идея что все объекты должны быть максимально готовы сразу после извлечения из БД. Для реализации различной логики объекта мы можем воспользоваться виртуальным полем типа ExpressionField
Например одним запросом MyOrmTable::getList(['select' => ['*', 'RELATED_ITEMS']])->fetchObject() мы можем получить и искомый объект и значение в поле RELATED_ITEMS любого типа!

Пример описания поля ORM сущности:
(new ExpressionField(
    'ANALOGS',
    '%s',
    array('PRODUCT_ID'),
    array(
        'data_type' => '\Bitrix\Main\ORM\Fields\ArrayField',
        'title' => Loc::getMessage('CART_PRODUCT_ANALOGS'),
        'fetch_data_modification' => function () {
            return array(
                function ($value, $query, $data, $alias) {
                    if ($value) {
                        $value = static::getAnalogsFromIblock($value);
                    }
                    return $value;
                }
            );
        }
    )
)),

Если есть вопросы или комментарии - прошу не стесняться!