2012-03-28 8 views
5

Encontré un problema de límite. El código que estoy usando es el siguiente:Límite Yii en el modelo relacionado al consultar

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

Quiero limitar las publicaciones consultadas con el propósito de paginación. También intenté agregar

'together'=>true 

después del límite, esto tampoco ayuda.

Cualquier ayuda es apreciada.

+0

+1 buena pregunta, he comprobado la consulta que se ejecuta, 'limit' nunca se agrega en la consulta. –

Respuesta

6

Esto sin duda trabajar, simplemente probado:

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

hágamelo saber si necesita alguna aclaración, y cómo funciona para usted. –

+1

gracias por la respuesta, está funcionando. Está claro para mí por qué. –

+0

contento de ayudar ... –

0

Se podría añadir alcance en su modelo y después utilizar

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); 

Y usted tiene un código limpio y fácil de leer.

Ver más información acerca de los ámbitos http://www.yiiframework.com/doc/guide/1.1/en/database.ar#named-scopes

Y este mensaje en el foro cómo dar params a su alcance utilizando -> con http://www.yiiframework.com/forum/index.php/topic/23358-parameterized-vs-named-scopes-question-using-yii-118/

+0

buena idea de usar ámbitos, pero el límite aún no funciona –

1

Aquí hay un wiki en parameterized named scopes.

Pero si desea filtrar registros en tablas relacionadas mientras utiliza la consulta relacional, entonces debe usar defaultScope().

Aquí hay un wiki en defaultScope y también muestra cómo omitir defaultScope cuando no es necesario.

Cuestiones relacionadas