我有以下疑问..
$Provider1 = new CSqlDataProvider($Query1, array('pagination'=>false));
$Result1 = $bProvider->getData();
$Provider2 = new CSqlDataProvider($Query2, array('pagination'=>false));
$Result2 = $bProvider->getData();
然后我合并两个数组结果
$Result = array_merge($Result1, $Result2);
由于此数组$Result
包含多个记录,例如100 +
以下是我为分页所尝试的内容
// Counting array result for pagination
$item_count = count($timelineResult);
$page_size = 10;
$pages = new CPagination($item_count);
$pages->setPageSize($page_size);
$end = ($pages->offset + $pages->limit <= $item_count ? $pages->offset + $pages->limit : $item_count);
$criteria = new CDbCriteria();
$criteria->limit = $end;
$criteria->offset = $pages->offset;
现在问题是如何将此$criteria
应用于我的$Result
答案 0 :(得分:1)
我建议您使用CArrayDataProvider
。您已经在一个名为$Result
的数组中得到了一个结果,并从您的分页代码中删除了CDbCriteria
,所以就像这样。
$item_count = count($Result);
$page_size = 10;
$pages = new CPagination($item_count);
$pages->setPageSize($page_size);
$page_size = 10
我们必须为CArrayDataProvider使用相同的页面大小10,以下是使用CArrayDataProvider
的方法:
$dataProvider=new CArrayDataProvider($Result, array(
'pagination'=>array(
'pageSize'=>$page_size,
),
));
然后在这样的数组中得到结果..
$MyResult = $dataProvider->getData();
我希望它对你有用。