Ich habe versucht, dieses eine für ziemlich viel herauszufinden und durch jeden Post von hier und Laracast gegangen, um herauszufinden, aber in Ader.Laravel 5.2 Unique Validation immer ungültig auf UPDATE
Ich habe das schon einmal gemacht und es hat funktioniert, aber ich bin mir nicht ganz sicher, warum es jetzt nicht geht.
Im Grunde eine Regel in Ihrem Formular Anfrage einrichten soll unter dem Format folgen:
<?php
class MyFormRequest extends Request{
public function rules(){
return [
'field' => 'required|unique:table_name:field,' . $this->input('field');
];
}
}
Dies ist für mich arbeiten, soll im Moment, aber nach meiner Erfahrung nicht. Ich habe versucht, die Regeln zu trennen, indem ich die eingehende Anfrage-Methode überprüfte und Regeln basierend darauf ordnete, ob die Anfrage ein Update oder ein Create ist.
Sollte nicht was ich für diese Anforderung genügen? Was wäre der beste Weg, meine Formularanforderung zu verwenden, aber sicherzustellen, dass ich die Eindeutigkeit von beliebig vielen Tabellenfeldern unabhängig von ihren Datentypen validieren kann, weil ich spüre, dass dies möglicherweise mit der Tatsache zusammenhängt, dass Laravel zu sein scheint ein Aggregat auf dem zu validierenden Feld zu machen, und wenn es keine Ganzzahl ist, wird es beispielsweise weiterhin die Fehlermeldung anzeigen.
Eine andere Möglichkeit, dies zu lösen, ist, wenn ich meine eigene Validierungsmethode für die Felder implementiere, die ich validieren möchte. Wie würde ich das machen?
Hallo Islam habe ich schon getan, was du oben vorschlagen, aber es gibt mir den Fehler unten: SQLSTATE [42S02]: Basistabelle oder Ansicht nicht gefunden: 1146 Table ‚theonesystem.company_groups: Code‘ existiert nicht (SQL: Wählen Sie count (*) als Aggregat aus 'company_groups: code' wobei' TEST VALUEL' = "TEST VALUE" und 'id' <> id) – Maximum86
Es scheint, dass diese Regel nicht für andere Feldtypen außer für ganze Zahlen funktioniert und Dinge wie das, wo Sie tatsächlich Aggregation tun können.Corrct mich, wenn ich falsch liege – Maximum86
Nein, ich denke nicht. Da das Problem hier mit dem Tabellennamen nicht in der Datenbank gefunden wird, stellen Sie sicher, dass die Tabelle in der gleichen Datenbank ist, die Sie gerade verbinden, testen Sie es, indem Sie alle Daten aus dieser Tabelle in Tinker oder etwas bekommen. –