第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 yii2 模型上添加過濾器

如何在 yii2 模型上添加過濾器

PHP
www說 2023-08-19 17:31:41
我有一個用于從視圖讀取數(shù)據(jù)的查詢。然后,我對此應(yīng)用一個不相關(guān)的 sql 過濾器,以取出我不需要的模型,然后返回一個 arrayDataProvider 實例。我應(yīng)用的過濾器是促銷期。但是,當(dāng)我將查詢參數(shù)傳遞給該搜索模型時,它不起作用。我該如何解決這個問題?以下是從視圖中選擇數(shù)據(jù)的代碼:public function search($params, $promotion_period){    $query = StaffEmploymentListView::find()->alias('LIST')            ->joinWith(['employment EMPLOYMENT'])            ->where(['LIST.EMPLOYMENT_TYPE' => 'PROMOTION']);       $query->andFilterWhere(['like', 'DEPT_NAME', $this->DEPT_NAME])            ->andFilterWhere(['like', 'COL_NAME', $this->COL_NAME])            ->andFilterWhere(['like', 'GRADE_DESCR', $this->GRADE_DESCR])            ->andFilterWhere(['like', 'DESG_NAME', $this->DESG_NAME])            ->andFilterWhere(['like', 'TRIBE_NAME', $this->TRIBE_NAME])            ->andFilterWhere(['like', 'GENDER', $this->GENDER])            ->andFilterWhere(['like', 'HOME_DISTRICT', $this->HOME_DISTRICT]);    $allModels = [];    if($promotion_period !== null){        $to_date = strtotime($promotion_period['to_date']);        $from_date = strtotime($promotion_period['from_date']);        foreach ($query->all() as $model)        {            $effective_date = strtotime($model->employment->APPOINT_DATE);            if ($effective_date >= $from_date && $effective_date <= $to_date){                $allModels[] = $model;            }        }    }    else{        foreach ($query->all() as $model)        {            $allModels[] = $model;        }    }    $dataProvider = new ArrayDataProvider([        'allModels' => $allModels,        'pagination' => [            'pageSize' => 20,        ],        'sort' => false    ]);    $this->load($params);    if (!$this->validate()) {        return $dataProvider;    }        return $dataProvider;}以下是 URL 中的參數(shù)轉(zhuǎn)儲:['from_date' => '''to_date' => '''PromotedStaffSearch' => [    'COL_NAME' => 'CENTRAL ADMINISTRATION'    'DEPT_NAME' => ''    'GRADE_DESCR' => ''    'DESG_NAME' => ''    'GENDER' => ''    'TRIBE_NAME' => ''    'HOME_DISTRICT' => '']]
查看完整描述

1 回答

?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗 獲得超2個贊

據(jù)我了解,您試圖查找between指定時間段(如果已設(shè)置)的所有模型。


嘗試這個:


public function search($params, $promotion_period)

{

? ? $query = StaffEmploymentListView::find()->alias('LIST')


? ? ? ? ? ? ->joinWith(['employment']) //Here should be your relation name from StaffEmploymentListView model?


? ? ? ? ? ? ->where(['LIST.EMPLOYMENT_TYPE' => 'PROMOTION']);

? ?

? ??


? ? $dataProvider = new ActiveDataProvider([

? ? ? ? 'query' => $query,

? ? ? ? 'pagination' => [

? ? ? ? ? ? 'pageSize' => 20,

? ? ? ? ],

? ? ? ? 'sort' => false

? ? ]);


? ? $this->load($params);


? ? if (!$this->validate()) {

? ? ? ? return $dataProvider;

? ? }


? ? $query->andFilterWhere(['like', 'DEPT_NAME', $this->DEPT_NAME])

? ? ? ? ? ? ->andFilterWhere(['like', 'COL_NAME', $this->COL_NAME])

? ? ? ? ? ? ->andFilterWhere(['like', 'GRADE_DESCR', $this->GRADE_DESCR])

? ? ? ? ? ? ->andFilterWhere(['like', 'DESG_NAME', $this->DESG_NAME])

? ? ? ? ? ? ->andFilterWhere(['like', 'TRIBE_NAME', $this->TRIBE_NAME])

? ? ? ? ? ? ->andFilterWhere(['like', 'GENDER', $this->GENDER])

? ? ? ? ? ? ->andFilterWhere(['like', 'HOME_DISTRICT', $this->HOME_DISTRICT]);


? ? //$allModels = [];


? ? if(is_array($promotion_period) && isset($promotion_period['to_date']) && isset($promotion_period['from_date'])){

? ? ? ? //also check if you $promotion_period params are not empty

? ? ? ? $to_date = strtotime($promotion_period['to_date']);

? ? ? ? $from_date = strtotime($promotion_period['from_date']);


? ? ? ? $query->andFilterWhere(['BETWEEN', 'EMPLOYMENT_TABLE_NAME.APPOINT_DATE', $from_date, $to_date]);


? ? }

? ??

? ? //Now you can get all your filtered models as array like this:

? ? return $dataProvider->getModels();

}


查看完整回答
反對 回復(fù) 2023-08-19
  • 1 回答
  • 0 關(guān)注
  • 140 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號