Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erläuterung der Schritte zum Einrichten von Untertabellen für Beziehungen zwischen Laravel-Modellen

Detaillierte Erläuterung der Schritte zum Einrichten von Untertabellen für Beziehungen zwischen Laravel-Modellen

php中世界最好的语言
Freigeben: 2023-03-26 06:12:01
Original
2053 Leute haben es durchsucht

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;
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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!

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