Maison  >  Article  >  développement back-end  >  Méthode de mise en œuvre du champ lié à YII avec fonction de recherche et de tri

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

一个新手
一个新手original
2017-10-23 09:06:461309parcourir

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 }

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


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


1 //search函数中添加 表示在SQL语句中增加关联查询
2 //看起来是那么的熟悉,哈哈
3 $query->joinWith([&#39;pt&#39;]);   //这里等待pt中的值就是step1中get后面的命名
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 );
2.5. Ajouter une configuration de filtrage dans une recherche


1 //在代码里面照着队形添加这一句即可
2 //like,关联表全名,this->name
3 $query->andFilterWhere(['like', '**_pt.name', $this->name]) ;
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 ]
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]
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!

Déclaration:
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