Implementierungsfall zugehöriger Felder mit Such- und Sortierfunktion im Yii-Framework

黄舟
Freigeben: 2023-03-16 18:12:02
Original
1055 Leute haben es durchsucht

1. Einführung

Es ist fast zwei Monate her, seit ich mit dem YII-Framework in Berührung gekommen bin, aber mein Verständnis des YII-Frameworks ist nicht sehr tiefgreifend, ich mache es nur Wenn ich an einem Projekt arbeite, greife ich nur dann auf das Handbuch zurück, wenn ich auf etwas stoße, das ich nicht verstehe.

Im vorherigen Projekt war es notwendig, die Felder der zugehörigen Tabellen anzuzeigen und Such- und Sortierfunktionen bereitzustellen. Dies war mir vorher noch nicht begegnet, also habe ich im Handbuch nach relevanten Informationen gesucht und diese aufgeschrieben Anforderung, und habe mir ein paar Notizen zu Youdao Cloud gemacht. Heute ist Wochenende und ich werde es in einem Blog organisieren, wenn ich Zeit habe.

Kommen wir ohne weitere Umschweife direkt zu den Schritten.

2. Arbeitsschritte

Hintergrund: Fügen Sie hier Assoziationstabellenfelder zur von GII automatisch generierten CURL hinzu.

Anforderung: Es gibt ein Feld pt_id in Tabelle A, das mit Tabelle B verknüpft ist. Jetzt muss der Namenswert des mit Tabelle B verknüpften Felds basierend auf der auf GII von Tabelle A generierten CURL hinzugefügt werden eine Such- und Sortierfunktion.

2.1. Schritt 1: Fügen Sie eine Methode in A-Modell hinzu


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

2.2. Fügen Sie die erforderliche Zuordnung in A hinzu Suchfeldvariablen


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

2.3. Ändern Sie die Suchfunktion in einer Suche


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

2.4. Sortierkonfiguration in der A-Suche festlegen


 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 );
Nach dem Login kopieren

2.5. In der A-Suche Filterkonfiguration hinzufügen


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

2.6. Ändern Sie die Rasteransicht in der Indexansicht


 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 ]
Nach dem Login kopieren

Zu diesem Zeitpunkt ist mehr als die Hälfte davon abgeschlossen. Wenn Sie auf diesen Controller zugreifen, können Sie den Seiteneffekt bereits sehen, aber er funktioniert nicht bei der Suche.

Da die Feldinformationen, die Sie zu diesem Zeitpunkt übermittelt haben, unsicher sind und nicht im Programm aufgezeichnet werden.

2.7. Legen Sie die Sicherheitsstufe für dieses Feld fest


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

Fertig! !

3. Zusammenfassung

Anhand dieses Beispiels erfahren Sie, wie Sie verwandte Felder in Yii hinzufügen und dann entsprechend verwenden können Das vorhandene Wissen verändert die Dinge auf mehr Arten. . . .

Das obige ist der detaillierte Inhalt vonImplementierungsfall zugehöriger Felder mit Such- und Sortierfunktion im Yii-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!