Heim  >  Artikel  >  Backend-Entwicklung  >  Das Assoziationsmodell von ThinkPHP

Das Assoziationsmodell von ThinkPHP

不言
不言Original
2018-06-07 17:10:493047Durchsuche

ThinkPHP-Assoziationsmodell-Betriebsbeispielanalyse, Freunde, die es brauchen, können darauf verweisen

Normalerweise umfassen die Assoziationsbeziehungen, über die wir sprechen, die folgenden drei Typen:
◇ Eins-zu-eins-Assoziation: ONE_TO_ONE, einschließlich HAS_ONE und BELONGS_TO
◇ Eins-zu-viele-Zuordnung: ONE_TO_MANY, einschließlich HAS_MANY und BELONGS_TO
◇ Viele-zu-viele-Zuordnung: MANY_TO_MANY
Zuordnungsdefinition
Zuordnung CURD-Operation der Datentabelle, derzeit unterstützte Assoziationsbeziehungen, einschließlich der folgenden vier Typen: HAS_ONE, BELONGS_TO, HAS_MANY, MANY_TO_MANY
Ein Modell kann entsprechend der Komplexität des Geschäftsmodells ohne Einschränkungen mehrere Assoziationen gleichzeitig definieren. Alle Assoziationsdefinitionen sind einheitlich in der Mitgliedsvariablen $_link der Modellklasse und kann dynamische Definitionen unterstützen. Um Assoziationsoperationen zu unterstützen, muss die Modellklasse die RelationModel-Klasse erben. Das Format der Assoziationsdefinition lautet:

protected $_link = array( 
' 关联 1' => array( 
' 关联属性 1' => ' 定义 ', 
' 关联属性 N' => ' 定义 ', 
), 
' 关联 2' => array( 
' 关联属性 1' => ' 定义 ', 
' 关联属性 N' => ' 定义 ', 
), 
... 
);

mapping_type Assoziationstyp muss HAS_ONE in der HAS_ONE-Konstantendefinition verwenden.

class_name Der Name der Modellklasse, die zugeordnet werden soll

mapping_name Der zugehörige Mapping-Name, der zum Abrufen von Daten verwendet wird
foreign_key Der zugehörige Fremdschlüsselname
condition Die zugehörige Bedingung
mapping_fields Die zugehörigen Felder zu abgefragt werden
as_fields ordnet den zugehörigen Feldwert direkt einem Feld im Datenobjekt zu
BELONGS_TO Definition der Zuordnungsmethode:

class UserModel extends RelationModel 
{ 
public $_link = array( 
'Profile'=> array( 
'mapping_type' =>HAS_ONE, 
'class_name'=>'Profile', 
// 定义更多的关联属性 
…… 
) , 
); 
}

class_name Der Name der zu verknüpfenden Modellklasse

mapping_name Der Zugehöriger Zuordnungsname, verwenden Sie zum Abrufen von Daten

foreign_key, um den Namen des Fremdschlüssels zuzuordnen.
mapping_fields, um das abzufragende Feld zuzuordnen.
condition, um die Bedingung zuzuordnen.
parent_key, um die zugeordnete Verbindung selbst zu referenzieren Feld
as_fields, um den zugehörigen Feldwert direkt einem Feld im Datenobjekt zuzuordnen
HAS_MANY Definition der Zuordnungsmethode:

'Dept'=> array( 
'mapping_type'=>BELONGS_TO, 
'class_name'=>'Dept', 
'foreign_key'=>'userId', 
'mapping_name'=>'dept', 
// 定义更多的关联属性 
…… 
) ,

class_name Modellklassenname, der zugeordnet werden soll

mapping_name Zugeordneter Zuordnungsname, Wird verwendet, um Daten zu erhalten, die mit

foreign_key Fremdschlüsselname
parent_key Selbstreferenzielle assoziationsbezogene Felder
condition Assoziationsbedingungen
mapping_fields Für die Assoziation abzufragende Felder
mapping_limit Anzahl der Datensätze, für die zurückgegeben werden soll Association
mapping_order Reihenfolge der Assoziationsabfrage
MANY_TO_MANY Definition der Assoziationsmethode:

'Article'=> array( 
'mapping_type' =>HAS_MANY, 
'class_name'=>'Article', 
'foreign_key'=>'userId', 
'mapping_name'=>'articles', 
'mapping_order'=>'create_time desc', 
// 定义更多的关联属性 
…… 
) ,

class_name Der Name der zu assoziierenden Modellklasse

mapping_name Der zugehörige Mapping-Name, der zum Abrufen von Daten verwendet wird

foreign_key Der zugehörige Fremdschlüsselname
relation_foreign_key Der Fremdschlüssel der zugehörigen Tabelle Schlüsselname
mapping_limit Anzahl der Datensätze, die von der Assoziation zurückgegeben werden sollen
mapping_order Reihenfolge der Assoziationsabfrage
relation_table Name der Many-to- Viele Zwischenassoziationstabellen
Assoziationsabfragen
Verwenden Sie die Relationsmethode, um Assoziationsoperationen durchzuführen. Die Relationsmethode ist nicht nur Sie können Assoziationsoperationen aktivieren und lokale Assoziationsoperationen steuern, sodass alle Assoziationsoperationen unter Kontrolle sind.

"Group"=>array( 
'mapping_type'=>MANY_TO_MANY, 
'class_name'=>'Group', 
'mapping_name'=>'groups', 
'foreign_key'=>'userId', 
'relation_foreign_key'=>'goupId', 
'relation_table'=>'think_gourpUser' 
)

Das ausgegebene $user-Ergebnis kann Daten ähnlich den folgenden sein:

$User = D( "User" ); 
$user = $User->realtion(true)->find(1);

Zugehöriges Schreiben

array( 
'id'=>1, 
'account'=>'ThinkPHP', 
'password'=>'123456', 
'Profile'=> array( 
'email'=>'liu21st@gmail.com', 
'nickname'=>'流年', 
) , 
)

Auf diese Weise werden die zugehörigen Profildaten automatisch erstellt geschrieben.

Assoziationsaktualisierung

$User = D( "User" ); 
$data = array(); 
$data["account"]="ThinkPHP"; 
$data["password"]="123456"; 
$data["Profile"]=array( 
'email'=>'liu21st@gmail.com', 
'nickname' =>' 流年 ', 
) ; 
$result = $User->relation(true)->add($user);

Assoziationslöschung

$User = D( "User" ); 
$data["account"]= "ThinkPHP"; 
$data["password"]= "123456"; 
$data["Profile"]=array( 
'email'=>'liu21st@gmail.com', 
'nickname' =>' 流年 ', 
) ; 
$result =$User-> relation(true)->where(‘id=3')->save($data);

Das Obige ist der gesamte Inhalt dieses Artikels, der für das Studium aller hilfreich sein wird Achten Sie auf die chinesische PHP-Website!

Verwandte Empfehlungen:

[ThinkPHP] Verwandte Abfrageprobleme

Das obige ist der detaillierte Inhalt vonDas Assoziationsmodell von ThinkPHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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