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.
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 .
1 //意思即获取Pt的数据 2 public function getPt() //get** get后面任意 3 { 4 //模型名:className(),B表字段=>A表对应字段 5 return $this->hasOne(Pt::className(), ['id' => 'ptid']); 6 }
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后面的命名
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 );
1 //在代码里面照着队形添加这一句即可 2 //like,关联表全名,this->name 3 $query->andFilterWhere(['like', '**_pt.name', $this->name]) ;
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, it is more than half done. When you access 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.
1 //在A Search中的设置规则方法中添加 2 //name字段为safe 3 [['name'], safe]
Done! !
This is just a small example. Through this example, you can know how to add related fields in Yii, then you can change more based on your existing knowledge. The tricks come out. . . .
The above is the detailed content of Implementation method of YII related field with search and sorting function. For more information, please follow other related articles on the PHP Chinese website!