ShelestovAnt
@ShelestovAnt
Верстаю и программирую

В ORM Битрикса есть сеттеры и геттеры?

Народ всем привет.
Такой вопрос:
Есть ORM
class RbUrlListTable extends DataManager
{
    public static function getFilePath()
    {
        return __FILE__;
    }

    public static function getTableName()
    {
        return 'rb_url_lists';
    }

    public static function getMap()
    {
        return array(
            new IntegerField('ID', array(
                'primary' => true,
                'autocomplete' => true,
            )),
            new StringField('TITLE', array(
                'required' => true,
            )),
            new StringField('ALIAS', array(
                'required' => true,
            )),
            new TextField('PARAMS', array(
                'required' => true,
            )),
            new TextField('SETTINGS', array(
                'required' => true,
            )),
        );
    }
}

в поле PARAMS содержится json строка.
Можно ли создать геттер который создаст новый элемент например TYPE со значением из PARAMS->TYPE?
  • Вопрос задан
  • 255 просмотров
Пригласить эксперта
Ответы на вопрос 2
alexfilus
@alexfilus
Senior backend developer
В стандартных таблицах часто вижу что в поле содержится сериализованный массив, а при запросе без дополнительных обработок он возвращается десериализованным. Можете попробовать использовать его. Но я не проверял как это работает в своих таблицах.
Либо напишите свою обёртку которая распакует json. Хотя сомнительное занятие, возвращается ведь объект, а не массив.
Можно переопределить getRow и пользоваться им.
Ответ написан
gromdron
@gromdron
Работаю с Bitrix24
Очень интересная задача.

Если Вам нужно оперировать только после получения данных, то Вам отлично подойдет механизм "Форматирования значений" из документации по ORM.
При этом можете использовать сериализацию или json на ваше усмотрение (рекомендую сериализацию - нативнее и есть шанс что в модуле производительности заработает).

Если у Вас MySQL выше 5,7 версии, можно добавить несколько Expression полей и доставать из JSON ключи так же как и поля. Пока не пробовали данный вариант - руки не доходили.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы