Set Limit No $Dataprovider

Opa,

Eu tenho o seguinte código:

$dataProvider = new Produtos(‘search’);

$dataProvider = $dataProvider->search();

$dataProvider->getPagination()->setPageSize(2);

$dataProvider->sort->defaultOrder = ‘rand()’;

Só que ao invés de getPagination()->setPageSize eu queria fazer um "limit".

Pesquisei por tudo e não achei :(

Limitar a quantidade total de registros retornados?

Isso.

Seria algo similar a "limit 0,2"

Mas eu já tenho o dataProvider definido, queria aproveitar o mesmo mudando só o limit do criteria.

Mauro,

Se estiver usando a função search padrão do Yii, tenta usar assim:


$model = new Produtos();

$dataProvider = $model->search();

$dataProvider->getPagination()->setPageSize(2);	

$dataProvider->sort->defaultOrder = 'rand()';

Tenta usar também


$dataProvider->limit = 2;

O problema de usar esse limit, é que ele só vai retornar 2 item na listagem, correto é definir a quantidade por página mesmo, do jeito que está fazendo.

Tem uma extensão que ajuda a criar quantidade de items por paginas no <select>

http://www.yiiframework.com/extension/pagesize/

Veja a estrutura interna.

Recentemente usei essa extensão Pagesize, funciona bacana!

Aqui ajuda bastante: www.youtube.com/watch?v=LQIhyKWhPIQ

Newerton:

O setPageSize gera paginação, não é o caso :(

Já o limit gerou o erro:

A propriedade "CActiveDataProvider.limit" não está definida.

Boas,

Para aplicar limite, podem usar a classe CDbCriteria. Exemplo:


$produtos = new Produtos('search');

$criteria=new CDbCriteria;

$criteria->limit = 2;// limitar a dois registos

//$criteria->offset = 0;

//$criteria->compare('nomeColuna', 'valor');


$dataProvider = new CActiveDataProvider($produtos, array(

	'criteria'=>$criteria,

));



Cumps.