Php Yii2在dataProvider中添加自定义查询,无需多次重写查询
我在ModelPhp Yii2在dataProvider中添加自定义查询,无需多次重写查询,php,activerecord,yii2,Php,Activerecord,Yii2,我在ModelAutosgetSpecialItems()中有一个查询,它在项目中被多次使用,但我需要外接程序控制器来筛选$dataProvider 如何使这个省略在控制器中再次写入相同的查询 Autos.php public function getSpecialItems() { return self::find()->where(['id_category' => 18])->all(); } controller.php publi
Autos
getSpecialItems()
中有一个查询,它在项目中被多次使用,但我需要外接程序控制器来筛选$dataProvider
如何使这个省略在控制器中再次写入相同的查询
Autos.php
public function getSpecialItems()
{
return self::find()->where(['id_category' => 18])->all();
}
controller.php
public function actionIndex()
{
$searchModel = new AutosSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
//need add query here
//$dataProvider->query->$searchModel->getSpecialItems();
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
您必须在
validate()
之后将过滤器添加到autosearch()
模型中:
您必须在
validate()
之后将过滤器添加到autosearch()
模型中:
莱昂尼科:这真的是个好主意吗?如果我想使用默认搜索(),我必须重写另一个搜索()。你可以创建一个特定的模型并从你的基础模型继承它,然后重写搜索方法。Leonico这真的是个好主意吗?如果我想使用默认搜索(),我必须重写另一个搜索()。您可以创建一个特定的模型并从基本模型继承它,然后重写搜索方法。
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 you need
$query->andFilterWhere([
'id_category' => 18,
]);