Heim > php教程 > PHP开发 > Yii2 implementiert Methoden, um verwandten Feldern die Unterstützung von Suchfunktionen zu ermöglichen

Yii2 implementiert Methoden, um verwandten Feldern die Unterstützung von Suchfunktionen zu ermöglichen

高洛峰
Freigeben: 2016-12-23 16:42:59
Original
1145 Leute haben es durchsucht

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 der 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 ('aktiv', 'inaktiv')

yii2advanced.companies Tabelle:

company_id:int(11)
company_name:varchar(100)
company_email:varchar(100)
company_address: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 von Zweigen hinzufügen:

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

Dann ändern Sie SearchBranches.php

Regeln ändern. Die Methode ist:

public function rules()
{
  return [
    [[&#39;branch_id&#39;], &#39;integer&#39;],
    [[&#39;branch_name&#39;, &#39;branch_address&#39;, &#39;branch_created_date&#39;, &#39;branch_status&#39;,&#39;companies_company_id&#39;], &#39;safe&#39;],
  ];
}
Nach dem Login kopieren

Suchmethode ändern:

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

Aktualisieren Weitere Yii2-Methoden zum Implementieren verwandter Felder zur Unterstützung von Suchfunktionen finden Sie unter

. Weitere Artikel finden Sie auf der chinesischen PHP-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 Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage