sen*_*sen 0 gridview foreign-keys yii2
在我的需求量的我想列出与关系数据的GridView控件,我有两个表tbl_work(ID,workid,cdr_id tbl_cd的(foreign_key))和tbl_cd(ID,主叫,被叫).
在工作模型和有一个关系的CD模型.然后我用tb_work表创建了一个网格,并显示了tbl_cd表记录.
工作模型中的搜索功能
$query = AuditorWorkItems::find();
$query->with("cd");
// add conditions that should always apply here
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
// grid filtering conditions
$query->andFilterWhere([
'id' => $this->id,
'workid' => $this->workid,
'cdr_id' => $this->cdr_id
]);
return $dataProvider;
Run Code Online (Sandbox Code Playgroud)
在我的网格中
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'attribute' => 'cdr_id',
'value' => function ($model) {
return $model->cdr->called;
},
],
[
'attribute' => 'cdr_id',
'value' => function ($model) {
return $model->cdr->caller;
},
],
Run Code Online (Sandbox Code Playgroud)
它显示被调用和调用者值但过滤器不起作用,你有任何其他想法用tbl_cd表中的所有列实现它
小智 6
步骤1 :
在搜索模型中定义变量:
public $calledValue;
Run Code Online (Sandbox Code Playgroud)
第2步 :
在规则中应用所需规则.
[['calledValue'], 'safe'],
Run Code Online (Sandbox Code Playgroud)
第3步:
如果要在加载参数之前对搜索模型中的该列进行排序,请编写以下代码:
$dataProvider->sort->attributes['calledValue'] =
[
'asc' => ['tbl_cd.called' => SORT_ASC], // TABLE_NAME.COLUMN_NAME
'desc' => ['tbl_cd.called' => SORT_DESC],
];
Run Code Online (Sandbox Code Playgroud)
第4步 :
现在要过滤数据,请在网格过滤条件中添加此代码.
$query->andFilterWhere(['like', 'tbl_cd.called', $this->calledValue]);
Run Code Online (Sandbox Code Playgroud)
第5步:
现在在您的索引文件中编写以下代码:
[
'attribute' => 'calledValue', //To display called value
'label' => 'Your Label',
'value' => 'tbl_cd.called'
],
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2444 次 |
最近记录: |