Come funziona 'limit' nel CDbCriteria?

Ciao a tutti, ho provato a cercare sul forum anche nelle risposte in inglese ma non sono riuscito a comprendere il funzionamento del ‘criteria’ associato ad un CActiveDataProvider.

Questo è il mio codice:

[i]$dpSlider=new CActiveDataProvider(‘Film’,array(

	'criteria'=>array(


		'order'=>"rand()",


		'limit'=>5,


	),

));[/i]

Io voglio ottenere solo 5 film a caso quando nella tabella ce ne sono 100.

Io da qui mi aspetterei che il che $dpSlider->itemCount valga 5.

Invece mi restituisce 10 - come mai?

Se qualcuno sa darmi una risposta lo ringrazio da subito.

Fabio

[font="arial, verdana, tahoma, sans-serif"][size="2"]Ciao falexio,

con l’occasione della tua richiesta mi sono informato e ti raccondo quanto sono riuscito a capire.[/size][/font]

Il “problema” da te descritto è stato più volte segnalato (guarda questo link). Purtroppo, al momento, non verrà ‘Fixato’, quindi bisogna trovare un’alternativa.

Un workaround è quello di disattivare il ‘pagination, in questo modo:




$dpSlider=new CActiveDataProvider('Film',array(

'criteria'=>array(

'order'=>"rand()",

'limit'=>5,

),

'pagination'=>false,

));



Così si perde però la funzionalità di ‘pagination

Un’altra alternativa sarebbe quella di creare una vista che contenga la limitazione a 5 record e puntare questa.

Spero di esserti stato utile.

Se servono soltanto 5 film, la paginazione non serve :D

Se si vuole anche la paginazione puoi settare ili limit della paginazione invece dell CDbCriteria

Il limit dell CPagination - http://www.yiiframew…on#limit-detail

Ed e da qui che vengono i 10 record di default - http://www.yiiframew…pageSize-detail

come si fà ad impostare il limit di CPagination?

ho provato ad impostarlo con limit=>5 ma è read-only.

Vi ringrazio per la risposta.

Non ero riuscito a darmi una risposta valida.

Nel caso in questione andrà benissimo una vista limitata a 5. La domanda l’avevo posta proprio per comprendere il funzionamento in quanto siccome sono proprio neofita di questo Framework cerco di non lanciarmi subito nelle soluzioni fai da te ma quando sbatto su un problema lo sfrutto per cercare di comprendere meglio il funzionamento.

Grazie

Saluti

si… limit e read-only… si deve usare pageSize