在SearchModel中搜索primaryKey失败

时间:2018-07-07 20:27:23

标签: model-view-controller yii2

每个值都将被视为选择数据库的记录,但是被称为id的PrimaryKey则不会。为什么?如何获取为PrimaryKey选择的记录? 这是SearchModel:

<?php

namespace frontend\modules\bewerber\models;

use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use frontend\modules\bewerber\models\Bewerber;

class BewerberSearch extends Bewerber {

    public $choice_date;

    public function rules() {
        return [
            [['id', 'id_person', 'id_person_rekrutiert_von', 'id_abrechnungsweg', 'id_kanal', 'id_bewerberquelle', 'id_ba_xml_gelernter_beruf_1', 'id_ba_xml_gelernter_beruf_2', 'id_ba_xml_gelernter_beruf_3', 'umkreis', 'avgs_betrag', 'wunschgehalt_brutto', 'wochenstunden_minimum', 'wochenstunden_maximum', 'angelegt_von', 'aktualisiert_von'], 'integer'],
            [['arbeitsuchend_seit', 'ablaufdatum_avgs', 'beurteilung_fachlich', 'beurteilung_persoenlich', 'sonstiges', 'verfuegbar_ab', 'gesuchte_positionen', 'anschreiben', 'bemerkung_intern', 'kandidat_seit', 'zuletzt_deaktiviert_am', 'angelegt_am', 'aktualisiert_am'], 'safe'],
            [['avgs', 'arbeitsumfang_vollzeit', 'arbeitsumfang_teilzeit', 'arbeitszeit_bueroueblich', 'arbeitszeit_vormittag', 'arbeitszeit_nachmittag', 'arbeitszeit_abend', 'arbeitszeit_nacht', 'arbeitszeit_wochenende', 'schichtbereitschaft', 'quereinsteiger', 'zeitarbeit', 'pkw', 'fuehrerschein_pkw', 'fuehrerschein_lkw', 'fuehrerschein_omnibus', 'reisebereitschaft', 'kandidat', 'veroeffentlichen_bewerberboerse', 'kontakt_halten', 'aktiv', 'optimistic_lock'], 'boolean'],
            [['choice_date'], 'boolean'],
        ];
    }

    public function scenarios() {
        return Model::scenarios();
    }

    public function search($params) {
        $query = Bewerber::find();

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
        ]);

        $this->load($params);

        if ($this->choice_date == 0) {
            $query->andFilterWhere(['<=', 'arbeitsuchend_seit', $this->arbeitsuchend_seit]);
            $query->andFilterWhere(['<=', 'kandidat_seit', $this->kandidat_seit]);
            $query->andFilterWhere(['<=', 'ablaufdatum_avgs', $this->ablaufdatum_avgs]);
            $query->andFilterWhere(['<=', 'verfuegbar_ab', $this->verfuegbar_ab]);
            $query->andFilterWhere(['<=', 'angelegt_am', $this->angelegt_am]);
            $query->andFilterWhere(['<=', 'aktualisiert_am', $this->aktualisiert_am]);
        } else {
            $query->andFilterWhere(['>=', 'arbeitsuchend_seit', $this->arbeitsuchend_seit]);
            $query->andFilterWhere(['>=', 'kandidat_seit', $this->kandidat_seit]);
            $query->andFilterWhere(['>=', 'ablaufdatum_avgs', $this->ablaufdatum_avgs]);
            $query->andFilterWhere(['>=', 'verfuegbar_ab', $this->verfuegbar_ab]);
            $query->andFilterWhere(['>=', 'angelegt_am', $this->angelegt_am]);
            $query->andFilterWhere(['>=', 'aktualisiert_am', $this->aktualisiert_am]);
        }
        /* Searching for id is not regarded.Why? */
        $query->andFilterWhere(['<=', 'id', $this->id]);
        $query->andFilterWhere(['<=', 'wunschgehalt_brutto', $this->wunschgehalt_brutto]);
        return $dataProvider;
    }
}

这里是控制器:

    public function actionIndex() {
        $searchModel = new BewerberSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
        return $this->render('index', [
                    'searchModel' => $searchModel,
                    'dataProvider' => $dataProvider,
        ]);
    }

++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++

0 个答案:

没有答案