hasOne et hasMany sont les fonctions uniques de Yii2 utilisées pour les requêtes d'association multi-tables. Il est recommandé de les utiliser lors de l'utilisation de requêtes d'association multi-tables. Cet article présente principalement l'utilisation détaillée des requêtes associées hasOne, hasMany et many-to-many dans Yii2. Les amis qui en ont besoin peuvent se référer à
Avant-propos
hasOne et hasMany sont les fonctions uniques de Yii2 pour les requêtes liées à plusieurs tables. Il est recommandé de les utiliser lors de l'utilisation de requêtes liées à plusieurs tables. Pourquoi? Étant donné que les résultats des requêtes associées de cette manière conserveront la propre fonction de tri d'en-tête de Yii2, ainsi que la valeur de stockage de l'identifiant de l'entrée dans CheckboxColumn, quant à savoir s'il existe Les requêtes hasOne et hasMany multi-tables de Yii2, qu'il s'agisse d'un document ou d'un article, peuvent en fait facilement trouver le maître de référence. Mais pourquoi l'auteur a-t-il écrit cet article ? dans Je n'ai pas vu l'utilisation de requêtes liées plusieurs-à-plusieurs dans les informations précédentes, je ne me répéterai pas ou ne répéterai pas d'autres. Cet article se concentre sur l'utilisation de requêtes liées plusieurs-à-plusieurs pour augmenter vos connaissances.Analyse des exigences
1 Utilisez une instruction de requête pour afficher toutes les données de la liste. Relations un-à-un Plusieurs et plusieurs-à-plusieurs. 2. La fonction de tri d'en-tête de Yii2 et la valeur de stockage de l'identifiant de l'entrée dans CheckboxColumn ne peuvent pas être détruites.Rendu
1. Un à un, un à plusieurs, plusieurs à plusieurs, tri d'en-tête. 2. La valeur identifiant de l'entrée dans CheckboxColumn.Analyse de code
Plusieurs à plusieurs
Exemple : Un client peut avoir plusieurs étiquettes, et une étiquette peut être destinée à plusieurs clients. 1. Ajoutez le code suivant à TSales (modèle de la table client) :
public function getcommon_tag() { return $this->hasMany(CommonTag::className(), ['itemid' => 't_id'])->onCondition(['idtype' => "内容"])->joinWith(['tag']); }
public function gettag() { return $this->hasOne(Tag::className(), ['id'=>'tagid']); }
[ 'attribute' => 'tag_id', 'value' => function ($model) { $_tag=$model->getRelatedRecords()['common_tag']; if(!empty($_tag)){ $tagName=""; foreach ($_tag as $key => $value) { $tagName.=$value['tag']['name'].'/'; } return rtrim($tagName,'/'); } }, ],
array.
Un-à-plusieurs
1. hasMany impliqué dans l'utilisation plusieurs-à-plusieurs précédente est une utilisation un-à-plusieurs pour atteindre un-à-plusieurs. -many, supprimez simplement le joinWith à la fin. Les autres configurations et méthodes de sortie sont les mêmes.One-to-one
1. L'utilisation individuelle est également mentionnée plus tôt. hasOne est une utilisation individuelle. le même que hasMany, donc ce n'est pas nécessaire ici. 1 Utilisez la sortie de code suivante (common_tag.name) pour obtenir la valeur du fichier associé. requête. Lorsque la valeur n'est pas trouvée, il faut que le champ de nom existe dans votre table client et que la valeur soit vide. Si le nom est répété, les champs de la table principale seront affichés en premier. model->getRelatedRecords() Obtenir.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!