Heim >Backend-Entwicklung >PHP-Tutorial >Yii2 implementiert Methoden, um zugehörige Felder zur Unterstützung von Suchfunktionen zu aktivieren_php-Beispiel

Yii2 implementiert Methoden, um zugehörige Felder zur Unterstützung von Suchfunktionen zu aktivieren_php-Beispiel

WBOY
WBOYOriginal
2016-08-17 13:02:30854Durchsuche

Das Beispiel in diesem Artikel beschreibt, wie Yii2 die Suchfunktion für verwandte Felder implementiert. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Hier gibt es zwei Tabellen. Die Tabellenstruktur ist wie folgt: Companies_compay_id ist ein Fremdschlüssel.

yii2advanced.branches-Tabelle:

branch_id:int(11)
Companies_company_id:int(11)
branch_name:varchar(100)
branch_address:varchar(255)
branch_created_date:datetime
branch_status:enum('active','inactive')

yii2advanced.companies-Tabelle:

company_id:int(11)
Firmenname:varchar(100)
firmen-email:varchar(100)
Firmenadresse:varchar(255)
logo:varchar(200)
company_start_date:datetime
company_create_date:datetime
company_status:enum('active','inactive')

In der obigen Tabelle können Sie CompaniesCompany.company_name verwenden, um den Firmennamen abzurufen, die Suche wird jedoch nicht unterstützt.

Um die Suchfunktion zu unterstützen, müssen Sie den folgenden Code zur Indexansicht der Zweige hinzufügen:

<&#63;= GridView::widget([
  'dataProvider' => $dataProvider,
  'filterModel' => $searchModel,
  'columns' => [
    ['class' => 'yii\grid\SerialColumn'],
    //添加的代码开始
    [
      'label'=>'公司名',
      'attribute'=>'companies_company_id',
      'value'=>'companiesCompany.company_name'
    ],
     //添加的代码结束
    'companiesCompany.company_name',
    // 'branch_id',
    // 'companies_company_id',
    'branch_name',
    'branch_address',
    'branch_created_date',
    // 'branch_status',
    ['class' => 'yii\grid\ActionColumn'],
  ],
]); &#63;>

Ändern Sie dann SearchBranches.php

Die Methode zum Ändern von Regeln ist:

public function rules()
{
  return [
    [['branch_id'], 'integer'],
    [['branch_name', 'branch_address', 'branch_created_date', 'branch_status','companies_company_id'], 'safe'],
  ];
}

Suchmethode ändern:

public function search($params)
{
  $query = Branches::find();
  $dataProvider = new ActiveDataProvider([
    'query' => $query,
  ]);
  $this->load($params);
  if (!$this->validate()) {
    // uncomment the following line if you do not want to any records when validation fails
    // $query->where('0=1');
    return $dataProvider;
  }
  // 添加下面这行代码
  $query->joinWith('companiesCompany');
  $query->andFilterWhere([
    'branch_id' => $this->branch_id,
  //  'companies_company_id' => $this->companies_company_id,
    'branch_created_date' => $this->branch_created_date,
  ]);
  $query->andFilterWhere(['like', 'branch_name', $this->branch_name])
    ->andFilterWhere(['like', 'branch_address', $this->branch_address])
    ->andFilterWhere(['like', 'branch_status', $this->branch_status])
     // 添加下面这行代码
    ->andFilterWhere(['like', 'companies.company_name', $this->companies_company_id]);
  return $dataProvider;

Aktualisieren Sie die Seite, um sie anzuzeigen

Leser, die an mehr Yii-bezogenen Inhalten interessiert sind, können sich die speziellen Themen dieser Website ansehen: „Einführung in das Yii-Framework und Zusammenfassung gängiger Techniken“, „Zusammenfassung des ausgezeichneten PHP-Entwicklungsframeworks“, „Grundlegendes Tutorial für den Einstieg“. mit Smarty-Vorlagen“, „Einführungs-Tutorial zum objektorientierten PHP-Programmierung-Design“, „Zusammenfassung der PHP-String-(String-)Verwendung“, „Einführungs-Tutorial zum PHP-MySQL-Datenbankbetrieb“ und „Zusammenfassung allgemeiner PHP-Datenbankbetriebsfähigkeiten“

Ich hoffe, dass dieser Artikel für jedermann beim PHP-Programmdesign basierend auf dem Yii-Framework hilfreich sein wird.

Stellungnahme:
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