Bug #46
offen[Bugsink] TYPO3\CMS\Extbase\Property\Exception\TargetNotFoundException: Object of type Qb\DvnlpIntranet\Domain\Model\Member with identity "6788" not found.
0%
Beschreibung
Bugsink: https://bugsink.cytrus.de/issues/issue/161edbab-0049-4af4-9b8c-8cd92022cec1/event/last/
Typ: NEW issue
Projekt: www-dvnlp-de
Bugsink Alert
TYPO3\CMS\Extbase\Property\Exception\TargetNotFoundException: Object of type Qb\DvnlpIntranet\Domain\Model\Member with identity "6788" not found.
Automatisch erstellt durch n8n
KI-Analyse:
Hier ist die präzise Analyse des Fehlers als Senior TYPO3/PHP Entwickler:
1. Ursache identifizieren¶
Fehler:
TYPO3\CMS\Extbase\Property\Exception\TargetNotFoundException
→ Ein Objekt vom Typ Qb\DvnlpIntranet\Domain\Model\Member mit der UID 6788 konnte nicht in der Datenbank gefunden werden.
Kontext:
- Der Fehler tritt im Frontend auf (
/vendor/typo3/cms-frontend/). - Extbase versucht, ein
Member-Objekt zu laden (z. B. über ein Repository oder eine Relation), aber das Objekt existiert nicht (mehr) in der Datenbank. - Typische Szenarien:
- Das Objekt wurde gelöscht, aber Referenzen darauf existieren noch (z. B. in einer Relationstabelle oder einem Cache).
- Die UID 6788 wurde manuell geändert oder ist ungültig.
- Ein Cache-Problem: Das Objekt wurde gelöscht, aber der Extbase-Identity-Map-Cache enthält noch veraltete Einträge.
- Ein Plugin/Controller versucht, das Objekt zu laden, ohne vorher zu prüfen, ob es existiert.
2. Fix beschreiben (konkret)¶
A) Sofortmaßnahme (kurzfristig)¶
-
Prüfen, ob das Objekt existiert:
SELECT * FROM tx_dvnlpintranet_domain_model_member WHERE uid = 6788;- Falls nicht vorhanden: Prüfen, ob es unter einer anderen UID existiert (z. B. durch Umbenennung).
-
Cache leeren:
typo3 cache:flush- Oder im TYPO3-Backend: Maintenance → Flush TYPO3 Cache.
-
Referenzen bereinigen:
- Prüfen, wo die UID 6788 noch referenziert wird (z. B. in
sys_file_reference,tt_content, oder anderen Tabellen). - Beispielabfrage für
tt_content:SELECT * FROM tt_content WHERE bodytext LIKE '%6788%';
- Prüfen, wo die UID 6788 noch referenziert wird (z. B. in
-
Fallback im Code implementieren:
- Im betroffenen Repository oder Controller prüfen, ob das Objekt existiert, bevor es verwendet wird:
$member = $this->memberRepository->findByUid(6788); if (!$member) { // Fallback: z. B. Default-Objekt laden oder Fehlermeldung ausgeben throw new \TYPO3\CMS\Extbase\Mvc\Exception\StopActionException('Member not found', 1623456789); }
- Im betroffenen Repository oder Controller prüfen, ob das Objekt existiert, bevor es verwendet wird:
B) Langfristige Lösung¶
-
Soft-Delete implementieren (falls nicht vorhanden):
- In der
Member-Klassedeleted-Feld nutzen (TYPO3-Standard):/** * @var bool */ protected $deleted = false; - Im Repository:
$query->getQuerySettings()->setIgnoreEnableFields(false);
- In der
-
Referenz-Integrität sicherstellen:
-
Foreign Keys in der Datenbank prüfen (z. B.
ON DELETE CASCADEoderON DELETE SET NULL). -
Extbase-Relationen mit
cascade="remove"oderlazy="false"konfigurieren (falls nötig).
-
Foreign Keys in der Datenbank prüfen (z. B.
-
Logging aktivieren:
- Im
ext_localconf.phpder Extension:$GLOBALS['TYPO3_CONF_VARS']['LOG']['Qb']['DvnlpIntranet']['writerConfiguration'] = [ \TYPO3\CMS\Core\Log\LogLevel::ERROR => [ \TYPO3\CMS\Core\Log\Writer\FileWriter::class => [ 'logFile' => 'typo3temp/var/logs/dvnlp_intranet.log', ], ], ]; - Dann im Code:
$this->logger->error('Member with UID 6788 not found');
- Im
-
TYPO3-Upgrade prüfen:
- Falls die Extension mit einer älteren TYPO3-Version läuft, könnte ein Bug in Extbase vorliegen (z. B. Issue #92456).
3. Betroffene TYPO3 Extension¶
-
Extension-Key:
dvnlp_intranet -
Namespace:
Qb\DvnlpIntranet -
Domain-Modell:
Member(tx_dvnlpintranet_domain_model_member) -
Likely betroffene Komponenten:
-
MemberRepository(z. B.findByUid(6788)) - Controller, die das
Member-Objekt verwenden (z. B.MemberController) - Plugins oder Content-Elemente, die auf
Memberverweisen.
-
4. Confidence¶
- 95% (hohe Sicherheit, da der Fehler klar auf ein nicht gefundenes Objekt hindeutet und die Ursachen typisch sind).
-
Unsicherheitsfaktoren:
- Ob das Objekt absichtlich gelöscht wurde oder ein Bug vorliegt.
- Ob Caching (z. B. Redis) eine Rolle spielt (selten, aber möglich).
Zusammenfassung der nächsten Schritte¶
-
Datenbank prüfen (
tx_dvnlpintranet_domain_model_memberfür UID 6788). - Cache leeren (TYPO3 + Browser).
- Code anpassen (Fallback für nicht gefundene Objekte).
- Logging aktivieren, um ähnliche Fehler zukünftig zu tracken.
-
Dokumentation der Extension prüfen (z. B. ob
Member-Objekte manuell gelöscht werden dürfen).
Nichts anzuzeigen