Heim > PHP-Framework > Laravel > Hauptteil

Einführung in die Methode zum Einrichten von Untertabellen für Beziehungen zwischen Laravel-Modellen

藏色散人
Freigeben: 2020-03-05 10:00:27
nach vorne
2873 Leute haben es durchsucht

In der tatsächlichen Entwicklung werden häufig Unterdatenbanken und Tabellen verwendet. Zu diesem Zeitpunkt ist zum Abfragen von Daten die Einrichtung von Untertabellen erforderlich Methode:

/**
 * 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

Um dann die Datentabelle hinzuzufügen, zu löschen, zu ändern und abzufragen, müssen Sie zuerst eine neue Modellinstanz erstellen und dann den Tabellennamen festlegen. 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?

Nach langer Suche konnte ich keinen guten Weg finden. Am Beispiel von HasOne musste ich die HasOne-Methode in der Model-Klasse kopieren, in myHasOne ändern und den Tabellennamen übergeben und rufen Sie setTable auf, nachdem das Objekt in der Funktion instanziiert wurde. Natürlich ist dies möglich.

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 frage mich, ob jemand einen eleganteren Weg hat.

Weitere technische Artikel zum Laravel-Framework finden Sie in der Spalte Laravel-Tutorial!

Das obige ist der detaillierte Inhalt vonEinführung in die Methode 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:segmentfault.com
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