Ich habe ein einfaches Formular, das an einen Controller sendet, der prüft, ob ein Name für einen Artikel bereits für ein bestimmtes Projekt vergeben wurde. Wenn dies der Fall ist, wird ein Fehler zurückgegeben. Dies ist der Code, den ich dafür verwende:
%Vor%Das Problem, das mir begegnet ist, ist, dass ich anstelle eines harten Löschens ein sanftes Löschen verwende, um sie aus der Datenbank zu entfernen, was bedeutet, dass beispielsweise "Test" nur einmal als Name verwendet werden kann. selbst nachdem es gelöscht wurde.
Wie kann ich sicherstellen, dass es unter den Elementen, die nicht gelöscht werden, eindeutig für dieses Projekt ist?
Sie können dies versuchen:
%Vor% Dies stellt sicher, dass name
in der Tabelle versions
eindeutig ist, wenn ein Datensatz weich gelöscht wird und denselben Namen hat, dann wird er nicht gezählt, bedeutet, dass der Name akzeptiert wird, selbst wenn dort ist ein gelöschter gelöschter Datensatz mit demselben Namen vorhanden.
Um ein Modell beim Aktualisieren zu ignorieren, sollten Sie das id
nach name
anstelle des ersten NULL
übergeben.
Update: Sie können auch so etwas verwenden, um eine eigene benutzerdefinierte Regel hinzuzufügen:
%Vor%Sie können es wie folgt verwenden:
%Vor%Ich weiß, dass diese Frage alt ist, aber ich bin darüber gestolpert, als ich nach einer Lösung für ein ähnliches Problem suchte. Sie benötigen keinen benutzerdefinierten Validierungscode.
Ich habe eine Datenbank mit Ledger-Codes, in der 'name' und 'short_name' für jeden Benutzer eindeutig sein müssen (user_id). Ich habe weiche Löschungen aktiviert, daher sollten sie nur für nicht gelöschte Zeilen für einen bestimmten Benutzer eindeutig sein.
Dies ist meine Funktion, die die Validierungszeichenfolgen zurückgibt:
%Vor%Für jeden, der sich über die Argument-String-Syntax für den eindeutigen Validator Gedanken macht, ist das Folgende:
%Vor%Die Wertfelder in Feldername / Wert-Paaren können entweder ein Wert sein, der übereinstimmt, NULL oder NOT_NULL.
Tags und Links php validation laravel-4 laravel