Yii2使用不同型号的搜索过滤器下拉列表

时间:2017-07-05 04:38:54

标签: php datagridview yii2 yii2-advanced-app search-form

我刚刚在我的应用中使用了Yii2。我想在索引视图中创建搜索过滤器表单,其中包含来自不同模型的属性,用于过滤器活动且不活动。

我有两张表“员工”和“合同”。

tbl_employee
id_employee
命名
DOB
解决

tbl_contract
ID
日期
状态

索引中的

我使用了这段代码

<?php echo $this->render('_search', ['model' => $searchModel]); ?>

我希望在索引视图中筛选具有有效合同且不是

的员工

这个_search.php

<?php $form = ActiveForm::begin([
    'action' => ['index'],
    'method' => 'get',
]); ?>

<?= $form->field($model, 'id_number')->textInput(['maxlength'=>6,'style'=>'width:225px']) ?>

<?= $form->field($model, 'name') ->textInput(['maxlength'=>30,'style'=>'width:225px']) ?>              

<?php $data = ['Active'=> 'Active', 'Inactive'=>'Inactive'];

echo '<label class="control-label">Status</label>';
echo Select2::widget([
'name' => 'Status_Contract',
'data' => $data,
'options' => [
    'placeholder' => 'Select Status Contract ...',
    ],
]);
?>

<div class="form-group">
    <?= Html::submitButton(Yii::t('app', 'Search'), ['class' => 'btn btn-success']) ?>
    <?= Html::a('Reset', ['/employee/index'], ['class'=>'btn btn-default']) ?>
</div>
<?php ActiveForm::end(); ?>

Models \ employee EmpSearch.php

$query = Employee::find()->joinWith('p_contract');

$dataProvider = new ActiveDataProvider([
        'query' => $query,

if (!($this->load($params) && $this->validate())) {
        return $dataProvider;
    }
    ]);
$query->andFilterWhere([
'id' => $this->id,
]);

$query->andFilterWhere(['like', 'name', $this->name]);

我的网页中的搜索表单

enter image description here

位于合同模型中的属性“状态”。像这样的关系。

public function getP_contract()
{
    return $this->hasOne(Contract::className(), ['id_emp' => 'id_employee', 'id' => 'id_contract']);
}

那么,我如何根据合约“active”或“Inactive”创建搜索表单。 请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

似乎您已经在模型中获得了适当的get状态关系,因此您应该为新的字段搜索状态添加属性

/* your related attribute */
public $status;

并且您已经为p_contract添加了一个joinwith,因此您应该将过滤器添加到状态

 // filter by status
   $query->joinWith(['p_contract' => function ($q) {
       $q->where('contratct_table_name.status LIKE "%' . $this->status. '%"');
}]);

您可以查看本教程了解更多信息http://www.yiiframework.com/wiki/621/filter-sort-by-calculated-related-fields-in-gridview-yii-2-0/(参见方案2)