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

高洛峰
高洛峰Original
2016-12-23 16:42:591124Durchsuche

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;],
  ],
]); ?>

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;],
  ];
}

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;

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.

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