L'exemple de cet article décrit comment Yii2 implémente la fonction de recherche pour les champs associés. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
Il y a deux tables ici, la structure de la table est la suivante, Companies_compay_id est la clé étrangère
table yii2advanced.branches :
branch_id : int (11)
companies_company_id:int(11)
branch_name:varchar(100)
branch_address:varchar(255)
branch_created_date:datetime
branch_status:enum ('actif','inactif' )
table yii2advanced.companies :
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')
Dans le tableau ci-dessus, vous pouvez utiliser CompaniesCompany.company_name pour obtenir le nom de l'entreprise, mais cela ne prend pas en charge la recherche.
Pour prendre en charge la fonction de recherche, vous devez ajouter le code suivant à la vue index des branches :
<?= 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'], ], ]); ?>
Puis modifier SearchBranches.php
Modifier les règles La méthode est :
public function rules() { return [ [['branch_id'], 'integer'], [['branch_name', 'branch_address', 'branch_created_date', 'branch_status','companies_company_id'], 'safe'], ]; }
Modifier la méthode de recherche :
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;
Actualiser Vous pouvez voir
sur la page pour plus d'articles connexes sur la méthode de Yii2 permettant aux champs associés de prendre en charge les fonctions de recherche. Veuillez faire attention au site Web PHP chinois !