Home  >  Article  >  Backend Development  >  Implementation case of associated fields with search and sorting function in Yii framework

Implementation case of associated fields with search and sorting function in Yii framework

黄舟
黄舟Original
2017-10-23 09:06:451056browse

1. Introduction

It has been almost two months since I came into contact with the yii framework, but my understanding of the yii framework is not very deep. I have not studied systematically, I am just doing it. When working on a project, I only turn to the manual when I encounter something I don’t understand.

In the previous project, it was necessary to display the fields of the associated tables and provide search and sorting functions. I had not come across this before, so I searched for relevant information in the manual and wrote out this requirement. , and took some notes on Youdao Cloud. Today happens to be the weekend and I have time to organize it into a blog.

Without further ado, let’s get straight to the steps.

2. Operation steps

Background: Here, association table fields are added to the CURL automatically generated by GII.

Requirement: There is a field pt_id in table A associated with table B; now it is necessary to add the name value of the field associated with table B based on the CURL generated by GII of table A, with a search and sorting function .

2.1. Step 1 Add a method in A model


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

2.2. Step 2 Add fields that need to be associated in A search Variable


1 public $name;   //可以关联显示多个字段
2 public $*****;  //例子

2.3. Modify the search function in A search

1 //search函数中添加 表示在SQL语句中增加关联查询
2 //看起来是那么的熟悉,哈哈
3 $query->joinWith(['pt']);   //这里等待pt中的值就是step1中get后面的命名

2.4. Set the sorting configuration in A search

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

2.5. Add the filtering configuration in A search

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

2.6. Modify the gridview in the index view

 1 'columns' => [ 
 2 //=========== 
 3 //添加 
 4 [ 
 5           'attribute' => 'name', 
 6           'label' => '平台', 
 7           'value' => 'pt.name', 
 8           'filter' => Html::activeTextInput($searchModel, 'name', [ 
 9               'class' => 'form-control'
 10           ]),
 11 ],
 12 //=============
 13 ]

At this point, more than half of the work is completed. You can visit In this controller, you can already see the page effect, but it does not work when searching. Why?

Because the field information you submitted at this time is unsafe and is not recorded in the program.

2.7. Set the security level for this field

1 //在A Search中的设置规则方法中添加
2 //name字段为safe3 [['name'], safe]

The job is done! !

3. Summary

This is just a small example. Through this example, you can know how to add related fields in Yii, then you can use it based on the existing Knowledge changes things in more ways. . . .

The above is the detailed content of Implementation case of associated fields with search and sorting function in Yii framework. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn