Таблица ORM - amel-post/bitrix.help GitHub Wiki

<?php 
CModule::AddAutoloadClasses(
    '',
    array(
        'AddressesTable' => '/local/php_interface/include/personal/addresses_table.php'
    )
);
<?php 

use Bitrix\Main\Entity;
use Bitrix\Main\Application;
use Bitrix\Main\Entity\Event;
use Bitrix\Main\Loader;
use Bitrix\Main\Type\DateTime;

class CommentsTable extends Entity\DataManager
{
    public static $authors = array(
        'client' => 'Клиент', 'manager' => 'Менеджер'
    );

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

    public static function getMap()
    {
        return array(
            new Entity\IntegerField(
                "ID",
                array("primary" => true, 'autocomplete' => true,)
            ),
            new Entity\IntegerField(
                "BASKET_ID"
            ),
            new Entity\IntegerField(
                "USER_ID"
            ),
            new Entity\TextField(
                "TEXT"
            ),
            new Entity\EnumField(
                "AUTHOR", array(
                    'values' => array_keys(static::$authors),
                    'default_value' => 'client'
                )
            ),
            new Entity\DatetimeField(
                "DATE_CREATE",
                array(
                    'default_value' => new DateTime()
                )
            ),

        );
    }

    public static function add(array $data)
    {
        $data['BASKET_ID'] = MultiBasketUser::getInstance()->getBasketId();
        $data['USER_ID'] = MultiBasketUser::getInstance()->getUser()->GetID();
        return parent::add($data);
    }
    public static function addRequest(array $data)
    {
        $data['BASKET_ID'] = 0;
        $data['USER_ID'] = MultiBasketUser::getInstance()->getUser()->GetID();
        return parent::add($data);
    }


    public static function installDB()
    {
        $connection = Application::getInstance()->getConnection();

        if (!$connection->isTableExists(self::getTableName()))
        {
            self::getEntity()->createDbTable();
        }
    }

    public static function uninstallDB()
    {
        $connection = Application::getInstance()->getConnection();

        if ($connection->isTableExists(self::getTableName()))
        {
            $connection->dropTable(self::getTableName());
        }
    }

    public static function onBeforeAdd(Event $event)
    {

    }

    public static function onAfterAdd(Event $event)
    {

    }
}