Битрикс ORM позволяет получить данные из базы данных и представить их в виде массива.

Привет всем! Я ищу людей, которые имели опыт работы с ORM в Битриксе. Я хотел бы узнать, возможно ли получить подобный массив, используя ORM. У меня есть две таблицы (forms, forms_fields), которые взаимосвязаны через ID со связью один ко многим. Мне нужно получить массив с такой структурой.
  • 8 октября 2023 г. 5:17
Ответы на вопрос 1
Да, Битрикс ORM позволяет получить данные из базы данных и представить их в виде массива. В вашем случае, для получения массива с указанной структурой, можно использовать метод getList() ORM-модели Forms. 

Примерно такой код должен помочь вам достичь желаемого результата:

```php
use Bitrix\Main\Entity;

// Определяем ORM-модель таблицы forms
class FormsTable extends Entity\DataManager
{
    public static function getTableName()
    {
        return 'forms';
    }

    public static function getMap()
    {
        return array(
            'ID' => new Entity\IntegerField('ID', array(
                'primary' => true,
                'autocomplete' => true
            )),
            'NAME' => new Entity\StringField('NAME'),
            // Другие поля таблицы 'forms'
        );
    }
}

// Получаем массив с желаемой структурой
$resultArray = FormsTable::getList(array(
    'select' => array('ID', 'NAME', 'FIELDS'),
    'filter' => array(),
    'runtime' => array(
        new Entity\ReferenceField(
            'FIELDS',
            'forms_fields',
            array('=this.ID' => 'ref.FORM_ID')
        )
    )
))->fetchAll();

// Выводим полученный массив
echo '<pre>';
print_r($resultArray);
echo '</pre>';
```

Обратите внимание, что в приведенном примере я использовал некоторые условные названия для таблиц и полей. Вам необходимо заменить эти названия на соответствующие в вашей базе данных.

Также, в модели FormsTable::getMap() указывается структура таблицы 'forms'. Вам также необходимо определить ORM-модель для таблицы 'forms_fields' и указать ее связь с таблицей 'forms'.

Надеюсь, это поможет вам получить желаемый массив.
Похожие вопросы