2012-03-28 18 views
5

Wpadłem na problem z limitem. Kod, którego używam, jest następujący:Limit Yii na pokrewnym modelu podczas odpytywania

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

Chcę ograniczyć liczbę postów, do których wysłano zapytanie w celach przywoławczych. Próbowałem też dodać po pewnym czasie

'together'=>true 

. To też nie pomaga.

Każda pomoc jest doceniana.

+0

+1 dobre pytanie, sprawdziłem wykonywane zapytanie, "limit" nigdy nie jest dołączany do zapytania. –

Odpowiedz

6

To z pewnością działa, tylko przetestowane:

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

daj mi znać, jeśli potrzebujesz wyjaśnienia i jak to działa. –

+1

dzięki za odpowiedź, działa. Dla mnie jest jasne, dlaczego. –

+0

chętnie pomoże ... –

0

Można dodać zakres w modelu post i używać

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

I masz czysty i czytelny kod.

Zobacz więcej informacji na temat zakresów http://www.yiiframework.com/doc/guide/1.1/en/database.ar#named-scopes

i to forum posta Jak dać params do swojego zakresu pomocą -> z http://www.yiiframework.com/forum/index.php/topic/23358-parameterized-vs-named-scopes-question-using-yii-118/

+0

dobry pomysł na używanie celowników, ale limit nadal nie działa –

1

Oto wiki na stronie parameterized named scopes.

Ale jeśli chcesz filtrować rekordy w tablicach RELATED podczas korzystania z Relacyjnej kwerendy, powinieneś użyć defaultScope().

Oto wiki na defaultScope, a także pokazuje, jak obejść defaultScope, gdy nie jest potrzebne.

Powiązane problemy