ich eine App in Laravel erschaffe 5.Laravel: Erzwingen 12.59 Beziehungen
Die App Ich bin die Schaffung ist eine Rekrutierungsstelle, wo ein Kandidat viele Formulare ausfüllen müssen. Da es viele Felder gibt, habe ich beschlossen, die Tabelle users
logisch in viele kleinere Tabellen mit Eins-zu-Eins-Beziehungen zu partitionieren.
Zum Beispiel zwei solche Tabellen wie folgt aussehen:
Benutzer
- id
- Rolle (zB Admin oder Kandidaten)
- first_name
- Nachnamen
- dob
driving_licences
- ID
- User_id (FK an Benutzer)
- has_licence
- NUMBER_OF_POINTS
- licence_number
In dem obigen einfachen Fall die users
hat eine one-to-one Beziehung zu driving_licences
. Mit anderen Worten, jedes User
Modell muss ein einziges entsprechendes DrivingLicence
Modell haben.
Das Erstellen der obigen Tabelle und der entsprechenden Eloquent-Modelle ist einfach genug. Allerdings habe ich Schwierigkeiten, den besten Ansatz zu erzwingen, dass jeder Benutzer (oder jeder Benutzer, der ein Kandidat ist) eine entsprechende DrivingLicence
hat.
Die Lösung, die ich zur Zeit habe, ist, wenn ich etwas von DrivingLicence
verwende ich zunächst prüfen, ob die Beziehung es existiert und erstellen, wenn es nicht so mag:
if ($user->drivingLicence === null) {
$drivingLicence = new DrivingLicence();
$drivingLicence->user_id = $user->id;
$drivingLicence->save();
}
Diese jedes Mal getan werden muss, ich muss etwas mit DrivingLicence
tun, was natürlich eine Menge Wiederholungen schafft.
Daher meine Frage ist, wie kann ich erzwingen, dass eine 1: 1-Beziehung zwischen users
und driving_licences
in Laravel besteht.
Dies ist wahrscheinlich nicht der beste Weg, aber könnte Sie auf die richtige Spur bringen: Erstellen Sie eine Funktion in Ihrem 'User' Modell, um zu prüfen, ob die Lizenz null ist. Wenn dies der Fall ist, erstellen und speichern Sie eine neue Lizenz für den Benutzer. '$ user-> checkLicense()'. In 'checkLicense()' überprüfen Sie, ob 'null' ist, erstellen oder holen Sie die Lizenz und geben Sie die Lizenz zurück. Um das klarzustellen, reduziert dies die Notwendigkeit, die Prüfung für die Lizenz ständig neu zu schreiben und verschiebt sie zu einer Funktion innerhalb Ihres Modells. –
Eine Idee, die erforderliche Lizenz zu erzwingen, ist, dass beim Erstellen des Benutzers eine leere Lizenz erstellt wird, die beim Speichern des Benutzers gespeichert wird. Danach können Sie die richtigen Daten eingeben. Sie müssen nicht mehr prüfen, ob die Lizenz existiert, da Sie sie beim Erstellen des Benutzers erstellt haben. –