Méthode de mise en œuvre du champ lié à YII avec fonction de recherche et de tri

一个新手
Libérer: 2023-03-16 18:14:01
original
1308 Les gens l'ont consulté

1. Introduction

Cela fait presque deux mois que je suis entré en contact avec le framework yii, mais ma compréhension du framework yii n'est pas très approfondie, je n'ai pas étudié systématiquement, je fais juste. Lorsque je travaille sur un projet, je ne me tourne vers le manuel que lorsque je rencontre quelque chose que je ne comprends pas.

Dans le projet précédent, il était nécessaire d'afficher les champs des tables associées et de fournir des fonctions de recherche et de tri. Je n'avais jamais rencontré cela auparavant, j'ai donc recherché des informations pertinentes dans le manuel et j'ai écrit ceci. , et j'ai pris quelques notes sur Youdao Cloud. Aujourd'hui, c'est le week-end et j'ai le temps de l'organiser dans un blog.

Sans plus attendre, passons directement aux étapes.

2. Étapes de l'opération

Contexte : Ici, ajoutez les champs de la table d'association à la CURL générée automatiquement par GII.

Exigence : Il y a un champ pt_id dans la table A associé à la table B maintenant il faut ajouter la valeur du nom du champ associé à la table B en fonction du CURL généré en fonction du GII de la table A ; une fonction de recherche et de tri .

2.1. Étape 1 Ajouter une méthode dans un modèle


1 //意思即获取Pt的数据
2 public function getPt()    //get**  get后面任意
3 {
4     //模型名:className(),B表字段=>A表对应字段 
5     return $this->hasOne(Pt::className(), ['id' => 'ptid']); 
6 }
Copier après la connexion

Étape 2 Ajouter des variables de champ qui doivent être associées dans une recherche <. 🎜>


1 public $name;   //可以关联显示多个字段
2 public $*****;  //例子
Copier après la connexion
2.3. Modifier la fonction de recherche dans la recherche A


1 //search函数中添加 表示在SQL语句中增加关联查询
2 //看起来是那么的熟悉,哈哈
3 $query->joinWith([&#39;pt&#39;]);   //这里等待pt中的值就是step1中get后面的命名
Copier après la connexion
2.4. Configuration de la recherche


 1 //这里存放的是可以排序的字段 
 2 //如果A Search已经存在setSort,则其他动,只需要添加新的字段就可以了 
 3 //但是,我的yii 2生成的Search不存在这个排序,因此就需要额外添加了 
 4 //注意:当你的search中不存在这个配置时,即表明默认配置里面有设置过,当你在这里添加一个setSort则将会覆盖默认配置,之前默认有排序功能的字段将会失效 
 5 $dataProvider->setSort( 
 6 &#39;attributes&#39;=>[ 
 7 //====添加新字段排序配置= 
 8 &#39;name&#39;=>[ 
 9 &#39;asc&#39;=>[&#39;name&#39; => SORT_ASC],
 10 &#39;desc&#39;=>[&#39;name&#39; => SORT_DESC],
 11 &#39;lable&#39;=>&#39;name&#39;,
 12 ],
 13 //==================
 14 ]
 15 );
Copier après la connexion
2.5. Ajouter une configuration de filtrage dans une recherche


1 //在代码里面照着队形添加这一句即可
2 //like,关联表全名,this->name
3 $query->andFilterWhere([&#39;like&#39;, &#39;**_pt.name&#39;, $this->name]) ;
Copier après la connexion
2.6. La vue en grille dans la vue


 1 &#39;columns&#39; => [ 
 2 //=========== 
 3 //添加 
 4 [ 
 5           &#39;attribute&#39; => &#39;name&#39;, 
 6           &#39;label&#39; => &#39;平台&#39;, 
 7           &#39;value&#39; => &#39;pt.name&#39;, 
 8           &#39;filter&#39; => Html::activeTextInput($searchModel, &#39;name&#39;, [ 
 9               &#39;class&#39; => &#39;form-control&#39;
 10           ]),
 11 ],
 12 //=============
 13 ]
Copier après la connexion
est à plus de la moitié terminée à ce moment-là. Lorsque vous accédez à ce contrôleur, vous pouvez déjà voir l'effet de page, mais c'est bien le cas. vrai lors de la recherche Invalide, pourquoi ?

Parce que les informations de terrain que vous avez soumises à ce moment sont dangereuses et ne sont pas enregistrées dans le programme.

 2.7. Définir le niveau de sécurité pour ce champ


1 //在A Search中的设置规则方法中添加
2 //name字段为safe
3 [[&#39;name&#39;], safe]
Copier après la connexion
Terminé ! !

3. Résumé

Ceci n'est qu'un petit exemple, grâce à cet exemple, vous pouvez savoir comment ajouter des champs associés dans Yii, puis vous pouvez modifier davantage en fonction de vos connaissances existantes. sortir. . . .

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!