2012-03-28 13 views
5

Ho riscontrato un problema di limite. Il codice che sto usando è la seguente:Limite Yii sul modello correlato durante l'interrogazione

$model = PostCategory::model(); 
    $record = $model->with(array(
    'posts'=>array(
     'order'=>'posts.createTime DESC', 
     'limit'=>3, 
))->findByPK($id); 

voglio limitare i posti interrogate per scopi di paging. Ho anche provato ad aggiungere

'together'=>true 

dopo il limite, anche questo non aiuta.

Qualsiasi aiuto è apprezzato.

+0

+1 buona domanda, ho controllato la query che viene eseguita, 'limite' non viene mai aggiunto nella query. –

risposta

6

Questo sarà sicuramente lavorare, appena testato:

$model = PostCategory::model(); 
$record = $model->with(array(
    'posts'=>array(
    'order'=>'posts.createTime DESC', 
))->findByPK($id, 
      array('limit'=>3,'together'=>true) // adding this works 
); 
+0

fammi sapere se hai bisogno di chiarimenti e come funziona per te. –

+1

grazie per la risposta, funziona. Per me è chiaro il perché. –

+0

felice di aiutare ... –

0

Si potrebbe aggiungere portata nel modello Post e utilizzare

PostModel.php

public function recent($limit = 3) { 

    $this->getDbCriteria()->mergeWith(array(
     'order' => $this->getTableAlias(false, false).'.createTime DESC', 
     'limit' => (int) $limit, 
    )); 

    return $this; 
} 

MyController.php

$record = $model->with('posts:recent')->findByPK($id); 

E avete codice pulito e leggibile.

Tutte le informazioni sugli ambiti http://www.yiiframework.com/doc/guide/1.1/en/database.ar#named-scopes

E questo post forum come dare params a vostra portata utilizzando -> con http://www.yiiframework.com/forum/index.php/topic/23358-parameterized-vs-named-scopes-question-using-yii-118/

+0

buona idea dell'uso degli ambiti, ma il limite non funziona ancora –

1

Ecco una wiki su parameterized named scopes.

Ma se si desidera filtrare i record nelle tabelle CORRELATE mentre si utilizza Relational Query, è necessario utilizzare defaultScope().

Ecco una wiki su defaultScope e mostra anche come ignorare defaultScope quando non è necessario.

Problemi correlati