【发布时间】:2020-11-08 19:01:27
【问题描述】:
我正在获取我的 dataProvider,我尝试从中删除一些不符合所需条件的模型。此过滤器与 SQL 无关,因此我无法将其直接应用于查询。在我看来,如果我让数据提供者保持原样,则会显示分页链接。但是在我应用过滤器删除不需要的模型后,分页链接消失了。我尝试在我的新 dataProvider 上设置分页,但没有任何效果。
这是我在控制器操作中的代码:
$request = Yii::$app->request;
$search_model = new StaffEmploymentListViewSearch();
$data_provider = $search_model->search($request->queryParams);
$models = $data_provider->models;
for($k=0;$k<count($models);$k++)
{
if($models[$k]->employ === null){
unset($models[$k]);
}
}
$config = [
'pageParam' => 'page',
'pageSizeParam' => 'per-page',
'forcePageParam' => true,
'route' => null,
'params' => null,
'urlManager' => null,
'validatePage' => true,
'totalCount' => 5214,
'defaultPageSize' => 20,
'pageSizeLimit' => [
'0' => 1,
'1' => 50
],
'pagesize' => 20
];
$data_provider->setModels($models);
$data_provider->setPagination($config);
return $this->render('all-staff',[
'dataProvider' => $data_provider,
'searchModel' => $search_model
]);
这是我的搜索方法:
$query = StaffEmploymentListView::find()
->SELECT([
'PAYROLL_NO',
'BIRTH_DATE',
"ADD_MONTHS(BIRTH_DATE, 70 * 12) AS RETIRE_DATE"
]);
// add conditions that should always apply here
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort' => false,
'pagination' => [
'pagesize' => 20,
],
]);
我该怎么做?
【问题讨论】:
-
你能提供你想要实现的sql吗,还有为什么你不只使用sql查询来从那些雇佣状态等于
null的乞讨的模型中删除?你能提供你的搜索方法吗? -
@SergheiLeonenco 我的过滤器与 sql 无关。
-
为了更好地帮助你展示你的
search方法。 -
@SergheiLeonenco 我已编辑问题以包含搜索方法。
-
1) 您的记录可能少于 20 条吗? 2) 试试
pageSize代替pagesize(大写字母S)
标签: php yii2 kartik-v yii2-active-records