如何在Yii中将Criteria传递给数组

时间:2016-09-15 09:23:04

标签: php yii criteria

我有以下疑问..

$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

1 个答案:

答案 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();

我希望它对你有用。