Dieses Mal erkläre ich Ihnen ausführlich die Schritte zum Einrichten von Untertabellen für die Beziehungen zwischen Laravel-Modellen. Was sind die Vorsichtsmaßnahmen zum Einrichten von Untertabellen für die Beziehungen zwischen Laravel-Modellen? . Das Folgende ist ein praktischer Fall, schauen wir uns das an.
Was ist Eloquent?
Eloquent ist ein ORM, der vollständige Name ist Object Relational Mapping, übersetzt als „Object Relational Mapping“ (wenn Sie beziehen Sie sich einfach darauf. Es wäre zu unterschätzt, es als Datenbank-AbstrAktion Layer-Array-Bibliothek-Abstraktionsschicht zu behandeln. Das sogenannte „Objekt“ wird in diesem Artikel als „Modell“ bezeichnet; die Objektbeziehungszuordnung ist die Beziehung zwischen Modellen. Chinesisches Dokument: http://laravel-china.org/docs/eloquent#relationships
Zitat
wird häufig in der tatsächlichen Entwicklung verwendet Wenn die Benutzertabelle beispielsweise in 100 Tabellen unterteilt ist, müssen Sie separate Tabellen einrichten, um die Daten abzufragen. Beispielsweise stellt die Model-Klasse von Laravel die setTable-Methode bereit:
/** * Set the table associated with the model. * * @param string $table * @return $this */ public function setTable($table) { $this->table = $table; return $this; }
Dann müssen Sie zuerst hinzufügen und löschen , ändern und fragen Sie die Datentabelle neu ab und legen Sie dann den Tabellennamen fest. Zum Beispiel:
(new Circle())->setTable("t_group_" . hashID($userid, 20)) ->newQuery() ->where('group_id', $request->group_id) ->update($attributes);
Das ist sehr einfach. Wenn also die Beziehung zwischen Modellen wie HasOne, HasMany usw. diese Methode verwendet, wie richtet man dann die Untertabelle ein?
Ich habe nach langer Suche keine gute Lösung gefunden und mir die Implementierungsmethode der HasOne-Funktion der Model-Klasse angesehen Namen, also musste ich die HasOne-Methode kopieren und ändern. Ändern Sie es beispielsweise in myHasOne, fügen Sie den Parameter $table hinzu, um den Tabellennamen festzulegen, und rufen Sie setTable auf, nachdem das Objekt instanziiert wurde. Dann funktioniert es wie erwartet.
Der Code lautet wie folgt:
public function detail() { return $this->myHasOne(Circle::class, 'group_id', 'group_id', 't_group_' . hashID($this->userid, 20)); } public function myHasOne($related, $foreignKey = null, $localKey = null, $table) { $foreignKey = $foreignKey ?: $this->getForeignKey(); $instance = (new $related)->setTable($table); $localKey = $localKey ?: $this->getKeyName(); return new HasOne($instance->newQuery(), $this, $instance->getTable() . '.' . $foreignKey, $localKey); }
Ich weiß nicht, ob Sie einen eleganteren Weg haben.
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Empfohlene Lektüre:
Detaillierte Erläuterung der Redis-Schritte des PHP-Betriebs
Detaillierte Erläuterung der Anwendungsfälle des PHP-Singleton-Modus
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Schritte zum Einrichten von Untertabellen für Beziehungen zwischen Laravel-Modellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!