ホームページ >バックエンド開発 >PHPチュートリアル >検索・ソート機能付きYII関連フィールドの実装方法

検索・ソート機能付きYII関連フィールドの実装方法

一个新手
一个新手オリジナル
2017-10-23 09:06:461352ブラウズ

1. はじめに

私が yii フレームワークに触れてから約 2 か月が経ちますが、yii フレームワークについての理解はそれほど深くなく、体系的に勉強したことがなく、作業中にいくつかの問題に遭遇しました。知識を理解している場合にのみマニュアルをお読みください。

前のプロジェクトでは、関連付けられたテーブルのフィールドを表示し、検索とソート機能を持たせる必要がありましたが、これまでに出会ったことがなかったので、マニュアルで関連する情報を探してこの要件を書き出しました。それが利用可能になったとき、Daoyun はいくつかのメモを取り、今日はたまたま週末だったので、私はそれをブログにまとめる時間がありました。

早速、手順に進みましょう。

2. 操作手順

背景: ここでは、GII によって自動的に生成された CURL に関連するテーブル フィールドを追加します。

要件: テーブル B に関連付けられたテーブル A にフィールド pt_id があり、テーブル A の GII によって生成された CURL に基づいて、検索および並べ替え関数を使用してテーブル B に関連付けられたフィールドの名前の値を追加する必要があります。 。

2.1. ステップ1 Aモデルにメソッドを追加します


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

2.2. ステップ2 A検索に関連付ける必要があるフィールド変数を追加します


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

2.3. A検索の検索関数を変更します


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

2.4. 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. A searchのフィルタリング設定を追加する


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

完了途中までこのコントローラーにアクセスすると、すでにページの効果が表示されていますが、検索すると機能しません。なぜですか?

今回提出した現場情報は安全ではないため、プログラムには記録されません。

2.7. このフィールドのセキュリティレベルを設定します

 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 ]

これで作業は完了です。 !

3. 概要

これはほんの小さな例です。この例を通じて、Yii に関連するフィールドを追加する方法を知ることができ、既存の知識に基づいてさらにトリックを変更することができます。 。 。 。

以上が検索・ソート機能付きYII関連フィールドの実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。