Beispiele für die Verwendung der Modellvalidierung in Laravel

黄舟
Freigeben: 2023-03-16 19:20:01
Original
2154 Leute haben es durchsucht

Vorwort

Dieser Artikel führt Sie hauptsächlich in die relevanten Inhalte zur Verwendung der Modellvalidierung beim Laravel-Lernen ein und stellt sie Ihnen als Referenz und zum Studium zur Verfügung. Viel mehr sagen wir weiter unten nicht. Werfen wir einen Blick auf die ausführliche Einleitung.

Bevor Sie in die Datenbank schreiben, müssen Sie die Daten validieren, z. B. die Definition jeder Modellspalte einer Typprüfung unterziehen (die Spalte „Typ“ muss enum('card','loan')) sein, hier verwenden Sie dazu das Modellereignis.

Schreiben Sie in EventServiceProvider (oder passen Sie einen ValidationServiceProvider an):

public function boot()
{
  /**
   * Inspired by @see \Illuminate\Foundation\Providers\FormRequestServiceProvider::boot()
   *
   * Note: saving event is always triggered before creating and updating events
   */
  $this->app['events']->listen('eloquent.saving: *', function (string $event_name, array $data): void {
   /** @var \App\Extensions\Illuminate\Database\Eloquent\Model $object */
   $object = $data[0];
   
   $object->validate();
  });
}
Nach dem Login kopieren

'eloquent.saving: *' Stellt die Speicherung aller Modelle dar, d >

Auf diese Weise definieren Sie in jeder Unterklasse, die das abstrakte Modell erbt, einfach const COLUMN_TYPE_RULES, wie zum Beispiel:
// \App\Extensions\Illuminate\Database\Eloquent\Model

use Illuminate\Database\Eloquent\Model as EloquentModel;
use Illuminate\Validation\ValidationException;

abstract class Model extends EloquentModel
{
 public function validate():void
 {
  // 1. validate type rules (type-check)
  $validator = $this->getTypeValidator();
  
  if ($validator->fails()) {
   throw new ValidationException($validator);
  }
  
  // $validator = $this->getConstraintValidator();
  // 2. validate constraint rules (sanity-check)
 }

 protected function getTypeValidator()
 {
  return $this->getValidationFactory()->make($this->attributes, static::COLUMN_TYPE_RULES);
 }
 
 protected function getValidationFactory()
 {
  return app(Factory::class);
 }
 
 protected function getConstraintValidator()
 {
  // return $this->getValidationFactory()->make($attributes, static::COLUMN_CONSTRAINT_RULES);
 } 
}
Nach dem Login kopieren

Überprüfen Sie beim Schreiben vorab die Schemadefinition jedes Modells, um ungültige Kollisionen mit der Datenbank zu vermeiden Um zu überprüfen, ob die Felddefinition der Eingabedaten anhand des Modellschemas zulässig ist, müssen im Allgemeinen zusätzlich zur Definition des Typprüfungsschemas die Integritätsprüfungsregeln logisch überprüft werden Je nach Geschäftsanforderungen kann das Feld person_id in den Eingaben beispielsweise kein untergeordnetes Element sein. Das Geschäft ist hier unterschiedlich und die Einschränkungsregeln sind unterschiedlich. Der Zweck dieser Funktion besteht hauptsächlich darin, die Eingabe logisch zu überprüfen Daten.

OK, kurz gesagt, vor dem Schreiben in die Datenbank ist eine ungültige Trefferdatenbank erforderlich
class Account extends Model
{
 public const COLUMN_TYPE_RULES = [
  'id' => 'integer|between:0,4294967295',
  'source' => 'nullable|in:schwab,orion,yodlee',
  'type' => 'required|in:bank,card,loan',
 ];
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonBeispiele für die Verwendung der Modellvalidierung in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage