Ich baue ein Symfony2-Projekt und verwende gedmo/doctrine-extensions
( GitHub ), um das Löschen zu implementieren. Meine Frage ist, ob es eine Möglichkeit gibt, softdelete zu "deaktivieren" oder zu "überschreiben", oder sogar zu erkennen, ob etwas weich gelöscht wurde.
Hier ist die Situation:
Ich habe eine "Notiz" -Entität, die auf eine "Benutzer" -Entität verweist. Eine bestimmte Notiz verweist auf einen Benutzer, der gelöscht wurde. Obwohl der Benutzer gelöscht wurde, gibt er für die Logik "ist definiert" von TWIG den Wert true zurück und kann sogar die ID des gelöschten Benutzers zurückgeben. Wenn ich jedoch nach anderen Informationen frage (einschließlich des Parameters "deletedAt", der angibt, ob er gelöscht wurde oder nicht), erhalte ich den Fehler 500 "Entity wurde nicht gefunden".
Da die Daten tatsächlich immer noch da sind und die Notiz selbst nicht gelöscht wurde, möchte ich immer noch sagen, wer die Notiz geschrieben hat, obwohl der Benutzer gelöscht wurde.
Ist das möglich? Wenn nicht, wie erkenne ich richtig, ob etwas weich gelöscht wurde? Wie ich schon sagte, ruft $note->getUser()
immer noch ein Objekt ab und gibt für alle Null / "ist definiert" Vergleiche wahr zurück.
Sie müssen das Laden der Beziehung auf eager
einstellen. Dadurch wird das verzögerte Laden von Objekten mit nur id
und sonst nichts verhindert.
Weitere Informationen zum Eager-Laden und seiner Anmerkung finden Sie hier:
Ссылка .
Wie für meinen Code sieht das so aus, wenn Sie einen Link zu einem User
now jetzt definieren:
In diesem Fall kann die User
-Einheit mehrere answers
haben. Wenn Sie User
aus der Perspektive answer
laden, funktioniert dies:
Sie können den Soft-Delete-Vorgang vorübergehend deaktivieren, sodass gelöschte Elemente in Ihren Ergebnissen zurückgegeben werden. Siehe Dokumentation , speziell interessant für Sie ist der Abschnitt, der lautet:
Dies wird den SoftDeleteable-Filter deaktivieren, also Entitäten, die "soft-deleted" erscheint in den Ergebnissen $ em- & gt; getFilters () - & gt; disable ('soft-deleteable');
Also, führe zuerst den obigen Code auf deinem Entity Manager $em
aus und benutze ihn dann, um dein $note
zu sammeln.
Tags und Links symfony doctrine soft-delete