Vielleicht war ich gerade völlig unwissend für die Lösung meines Problems und, verdammt, vielleicht ist es eingebaut ... Ich habe es einfach nicht geschafft, eine solche Lösung zu finden. Ich habe die letzten zwei Wochen passiv geschaut und den letzten Tag aktiv.Wie behandelt man Fremdschlüssel-Constraints innerhalb einer Symfony-Anwendung?
Wie kann ich anmutig eine Fremdschlüsseleinschränkung in symfony behandeln?
Ich habe erwogen, die Ausnahme (Doctrine_Connection_Exception) und unter der Annahme war es eine Fremdschlüssel-Einschränkung, dann Weiterleiten des Benutzers an ein Fehlermodul mit einer Aktion für Fremdschlüssel Einschränkungen. Allerdings ist die Code-Redundanz grauenhaft und selbst wenn ich es in meine Basis-Action-Klasse lege, würde es sehr hässlich werden, wenn ich einen try-catch-Block um jeden Aufruf der Datenbank setzen müsste. Ganz zu schweigen von, die Annahme, dass die Ausnahme für eine Fremdschlüsseleinschränkung ist, ist eine schreckliche Idee, da diese Ausnahme aufgerufen wird, wenn es auch SQL-Syntax und tatsächliche Verbindungsfehler gibt.
Ich habe über die getPortableCode() - und getPortableMessage() - Methoden nachgedacht, die von der Ausnahmeklasse geerbt werden, um festzustellen, ob es eine Fremdschlüsseleinschränkung ist (was sie können), aber sie geben absolut keine Informationen über die Beschränkung selbst. Wenn beispielsweise eine bedingte Ausnahme ausgelöst wird, gibt getPortableCode() '-5' zurück und getPortableMessage() gibt 'bereits vorhanden' zurück. Zugegeben, ich könnte wahrscheinlich herausfinden, was fehlgeschlagen ist, und einen Fehler für meinen Benutzer auslösen, wenn es eine einzige Einschränkung gibt, aber natürlich habe ich die Dinge mit mehreren Einschränkungen kompliziert gemacht.
Wie auch immer, genug von meiner Wanderung, ich versuche herauszufinden, was andere Entwickler in meiner Situation tun ... Es scheint, als ob dies etwas in der glanzlosen "sanfte Einführung" sein sollte.
Ich bin nicht wirklich sicher, was Sie erreichen möchten. Warum möchten Sie in Aktionen mit Fremdschlüsseln umgehen? Ist eine Formularvalidierung nicht das, wonach Sie suchen? –