---
title: "Breaking: #93080 - RelationHandler internals protected"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:breaking-93080"
source: "Changelog/11.0/Breaking-93080-RelationHandlerInternalsProtected.rst"
typo3-version: "11.0"
typo3-major: 11
type: "breaking"
issue: 93080
forge: "https://forge.typo3.org/issues/93080"
tags: ["PHP-API", "FullyScanned", "ext:core"]
rendered: "2026-09-25T23:17:45+00:00"
---

# Breaking: #93080 - RelationHandler internals protected {#breaking-93080}

See [forge#93080](https://forge.typo3.org/issues/93080)

## Description {#description}

Various properties and methods of class
`\TYPO3\CMS\Core\Database\RelationHandler` have been set to protected:

-   `$firstTable` \- internal
-   `$secondTable` \- internal
-   `$MM_is_foreign` \- internal
-   `$MM_oppositeField` \- internal
-   `$MM_oppositeTable` \- internal
-   `$MM_oppositeFieldConf` \- internal
-   `$MM_isMultiTableRelationship` \- internal
-   `$currentTable` \- internal
-   `$MM_match_fields` \- internal
-   `$MM_hasUidField` \- internal
-   `$MM_insert_fields` \- internal
-   `$MM_table_where` \- internal
-   `getWorkspaceId()` \- internal
-   `setUpdateReferenceIndex()` \- still public but deprecated, logs deprecation on use.
-   `readList()` \- use class state after calling start()
-   `sortList()` \- use class state after calling start()
-   `readMM()` \- use class state after calling start()
-   `readForeignField()` \- use class state after calling start()
-   `updateRefIndex()` \- internal
-   `isOnSymmetricSide()` \- internal

## Impact {#impact}

Calling above properties or methods will raise a PHP fatal error.

## Affected Installations {#affected-installations}

It is quite unlikely many extensions are affected by this API change.
The extension scanner finds affected extensions as weak matches.

## Migration {#migration}

Above properties and methods are considered internal, there shouldn't be any
need to call them. Instances with extensions using those should be refactored
to for instance call `start()` instead of an additional call to `readList()`.
