0

假设我在 sql 查询中有 20 个结果。如果要在 yii 活动记录中使用限制,我显然会从结果中获得前四个,但是如果我想在同一个查询结果中获得第二个四个然后第三个四个呢?如何通过 sql 查询?

例如

        $criteria2 = new CDbCriteria();
        $criteria2->select = 'USERID, ADID ,ADTYPE, ADTITLE, ADDESC, PAGEVIEW, DISPPUBLISHDATE';
        $criteria2->addCondition("STATUS = 1");
        $criteria2->order = '"t".PAGEVIEW DESC,"t".PUBLISHDATE DESC';
        $criteria2->limit = 4;
        $criteria2->with = array('subcat','adimages');
        $result = $this->findAll($criteria2);
        return $result;
4

1 回答 1

1

对不起 :)

请参阅此处,如何使用 Oracle 进行分页(您使用的是 11g 吗?) LIMIT 和 OFFSET 的替代方案,用于在 Oracle 中进行分页

好吧,在 Yii 中只需设置偏移量,OCIConnector 将自动为 sql 设置 rownum

    $criteria2 = new CDbCriteria();
    $criteria2->select = 'USERID, ADID ,ADTYPE, ADTITLE, ADDESC, PAGEVIEW, DISPPUBLISHDATE';
    $criteria2->addCondition("STATUS = 1");
    $criteria2->order = '"t".PAGEVIEW DESC,"t".PUBLISHDATE DESC';
    $criteria2->limit = 4;
    $criteria2->offset = 0; //4, 8 - COciCommandBuiled applyLimit use it
    $criteria2->with = array('subcat','adimages');
    $result = $this->findAll($criteria2);
    return $result;
于 2012-11-06T04:58:55.367 回答