yii2 GridView 關聯表字段的搜尋和排序

2021-10-06 02:29:45 字數 2372 閱讀 8950

模型 biosafetycheck (檢查表) 一對多 biosafetyaccept (接受項,檢查項), 模型 biosafetyaccept 一對一 biosafetyproblem (問題與整改記錄)

biosafetycheck 中

public function getbiosafetyaccepts()

biosafeaccept 中

/**

* gets query for [[record]].

** @return \yii\db\activequery

*/public function getrecord()

/*** gets query for [[biosafetyproblem]].

** @return \yii\db\activequery

*/public function getbiosafetyproblem()

biosafetyproblem 中

public function getaccept()

現在,我們要對 biosafetyproblem 的 gridview 增加 biosafetycheck 中的兩個欄位check_time,address,並且可以實現排序和搜尋過濾。

biosafetyproblemsearch 中增加屬性 checktime和address(相當於關聯表字段在「本地」的「**」),並且新增規則到rules中

class biosafetyproblemsearch extends biosafetyproblem

*/public function rules()

修改 search 方法(按關係設定的連線查詢,排序規則,查詢條件,因為排序欄位和搜尋字段對應背後的sql,所以其名稱是資料庫欄位名,只有屬性名是我們新增的屬性名)

public function search($params)

// grid filtering conditions

$query->andfilterwhere([

'id' => $this->id,

'accept_id' => $this->accept_id,

'created_at' => $this->created_at,

'updated_at' => $this->updated_at,

]);$query->andfilterwhere(['like', 'description', $this->description])

->andfilterwhere(['like', 'urls_problem_pic', $this->urls_problem_pic])

->andfilterwhere(['like', 'result', $this->result])

->andfilterwhere(['like', 'urls_result_pic', $this->urls_result_pic]);

$query->andfilterwhere(['like', 'address', $this->address]); // 新增的

$query->andfiltercompare('check_time', $this->checktime); // 新增的

return $dataprovider;

}

最後修改 gridview 部分(accept_id為gii自動生成的方式,如果不需要排序和搜尋,直接accept.record.check_time那樣就行了)

//'accept_id',

//'accept.record.check_time',

//'accept.record.address',

['attribute' => 'checktime', 'label' => '檢查時間',

'value' => 'accept.record.check_time',],[

'attribute' => 'address', 'label' => '檢查位置',

'value' => 'accept.record.address',

],

_search表單中也需要相應修改(當然,日期字段最好用datepicker)

<?= $form->field($model, 'checktime')->label('檢查時間')->textinput() ?>

<?= $form->field($model, 'address')->label('檢查位置')->textinput() ?>

yii2GridView的簡單使用

初學yii2.0,用到gridview,翻閱官方文件,也沒怎麼看明白,自己慢慢摸索出來的,僅供參考 gridview widget dataprovider dataprovider,你傳過來的activedataprovider filtermodel searchmodel,columns cl...

YII2 Gridview 部分使用規則

yii提供了一套資料小部件 widgets 這些小部件可以用於顯示資料。detailview 小部件能夠用於顯示一條記錄資料,listview 和 gridview 小部件能夠用於顯示乙個擁有分頁 排序和過濾功能的乙個列表或者 1.頁面顯示的時間戳轉換 a.label 建立日期 attribute ...

YII2 GridView資料小部件

dataprovider dataprovider,filtermodel searchmodel,columns class yii grid serialcolumn attribute id contentoptions width 5 username nickname realname e...