27

searchYii2のメソッドがどのように機能するかを誰か説明できますSearchModelか? Giiを使って生成しました。ここにあります:

public function search($params){
    $query = MyModel::find();
    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);

    if (!($this->load($params) && $this->validate())) {
        return $dataProvider;
    }

    $this->addCondition($query, 'att1');
    $this->addCondition($query, 'att1', true);
    $this->addCondition($query, 'att2');
    $this->addCondition($query, 'att2', true);

    return $dataProvider;
}

これは私がそれを呼ぶ方法です:

$search = new MyModelSearch();
$myModels = $search->search(['att3' => '3']);

の呼び出しに使用する属性に関係なく、search常に同じ結果、つまりテーブル内のすべてのエントリが返されます。ここで、私が理解できない何かが欠けています。

どんな助けでも本当にありがたいです。ありがとう。

4

2 に答える 2

0

追加のパラメーターを search() メソッドに渡したい場合は、SomeSearch.php で次のように検索メソッドを変更できます。

public function search($params, $additional=0)
{
   //...
   if($additional==1) {
       $query->andWhere(['status'=>['some', 'other']);
   }
}

およびコントローラー内:

public function actionIndex()
{
   $searchModel = new AdminSearch();

   $additional=1;
   $dataProvider = $searchModel->search(Yii::$app->request->queryParams, $additional);

   return $this->render('index', [
      'searchModel' => $searchModel,
      'dataProvider' => $dataProvider,
   ]);
}
于 2018-06-08T06:18:16.333 に答える