src/ServiceProvider.php
private static function addEventListenersForHelpersHighloadblockTables(Capsule $capsule)
    {
        $dispatcher = $capsule->getEventDispatcher();
        if (!$dispatcher) {
            return;
        }

        $dispatcher->listen(['eloquent.deleted: *'], function($event, $payload) {
            /** @var EloquentModel $model */
            $model = $payload[0];
            if (empty($model->multipleHighloadBlockFields)) {
                return;
            }

            $modelTable = $model->getTable();
            foreach ($model->multipleHighloadBlockFields as $multipleHighloadBlockField) {
                if (!empty($model['ID'])) {
                    $tableName = $modelTable.'_'.strtolower($multipleHighloadBlockField);
                    DB::table($tableName)->where('ID', $model['ID'])->delete();
                }
            }
        });

        $dispatcher->listen(['eloquent.updated: *', 'eloquent.created: *'], function($event, $payload) {
            /** @var EloquentModel $model */
            $model = $payload[0];
            if (empty($model->multipleHighloadBlockFields)) {
                return;
            }

            $dirty = $model->getDirty();
            $modelTable = $model->getTable();
            foreach ($model->multipleHighloadBlockFields as $multipleHighloadBlockField) {
                if (isset($dirty[$multipleHighloadBlockField]) && !empty($model['ID'])) {
                    $tableName = $modelTable.'_'.strtolower($multipleHighloadBlockField);

                    if (substr($event, 0, 16) === 'eloquent.updated') {
                        DB::table($tableName)->where('ID', $model['ID'])->delete();
                    }

                    $unserializedValues = unserialize($dirty[$multipleHighloadBlockField]);
                    if (!$unserializedValues) {
                        continue;
                    }

                    $newRows = [];
                    foreach ($unserializedValues as $unserializedValue) {
                        $newRows[] = [
                            'ID' => $model['ID'],
                            'VALUE' => $unserializedValue,
                        ];
                    }

                    if ($newRows) {
                        DB::table($tableName)->insert($newRows);
                    }
                }
            }
        });
    }
private static function addEventListenersForHelpersHighloadblockTables(Capsule $capsule)
    {
        $dispatcher = $capsule->getEventDispatcher();
        if (!$dispatcher) {
            return;
        }

        $dispatcher->listen(['eloquent.deleted: *'], function($event, $payload) {
            /** @var EloquentModel $model */
            $model = $payload[0];
            if (empty($model->multipleHighloadBlockFields)) {
                return;
            }

            $modelTable = $model->getTable();
            foreach ($model->multipleHighloadBlockFields as $multipleHighloadBlockField) {
                if (!empty($model['ID'])) {
                    $tableName = $modelTable.'_'.strtolower($multipleHighloadBlockField);
                    DB::table($tableName)->where('ID', $model['ID'])->delete();
                }
            }
        });

        $dispatcher->listen(['eloquent.updated: *', 'eloquent.created: *'], function($event, $payload) {
            /** @var EloquentModel $model */
            $model = $payload[0];
            if (empty($model->multipleHighloadBlockFields)) {
                return;
            }

            $dirty = $model->getDirty();
            $modelTable = $model->getTable();
            foreach ($model->multipleHighloadBlockFields as $multipleHighloadBlockField) {
                if (isset($dirty[$multipleHighloadBlockField]) && !empty($model['ID'])) {
                    $tableName = $modelTable.'_'.strtolower($multipleHighloadBlockField);

                    if (substr($event, 0, 16) === 'eloquent.updated') {
                        DB::table($tableName)->where('ID', $model['ID'])->delete();
                    }

                    $unserializedValues = unserialize($dirty[$multipleHighloadBlockField]);
                    if (!$unserializedValues) {
                        continue;
                    }

                    $newRows = [];
                    foreach ($unserializedValues as $unserializedValue) {
                        $newRows[] = [
                            'ID' => $model['ID'],
                            'VALUE' => $unserializedValue,
                        ];
                    }

                    if ($newRows) {
                        DB::table($tableName)->insert($newRows);
                    }
                }
            }
        });
    }
Для множественных полей Highload блоков битрикс использует вспомогательные таблицы.
Данный метод вешает обработчики на eloquent события добавления и обновления записей которые будут актуализировать и эти таблицы.

@param Capsule $capsule