ORM и pagination. Как сделать?

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
delvin
Сообщения: 85
Зарегистрирован: 2009.11.13, 15:29

ORM и pagination. Как сделать?

Сообщение delvin » 2009.12.21, 16:14

Привет всем.
Попробую в кратце описать проблему.
Есть модель brand

Код: Выделить всё

        public function relations() {
        return array(
            'goods'=>array(self::HAS_MANY, 'goods', 'brandId'),
        );
       } 
и модель goods

Код: Выделить всё

       public function relations() {
        return array(
            'brand' => array(self::BELONGS_TO, 'brand', 'brandId'),
            ...
        );
       } 
Тут все просто.
Но затык произошел когда мне нужно постарнично вывести товары принадлежащие бренду?
т.е.

Код: Выделить всё

$currentBrand = Brand::model()->findbyPk($id);
$currentBrand->goods; // <-- вот это надо вывести постранично
 
Уже часа два по офсайту роюсь, ничего найти не могу.

Аватара пользователя
Caveman
Сообщения: 152
Зарегистрирован: 2009.04.04, 20:56
Откуда: Москва
Контактная информация:

Re: ORM и pagination. Как сделать?

Сообщение Caveman » 2009.12.21, 16:48

Вы не с той стороны подходите.
Вам же нужны товары, относящиеся к бренду, значит их и надо получать:

Код: Выделить всё

$criteria=new CDbCriteria;
$criteria->condition = 'brand.id = '.$id;
$with_option = 'brand';

$pages=new CPagination(Goods::model()->with($with_option)->count($criteria));
$pages->pageSize = $goodsPerPage;
$pages->applyLimit($criteria);

$goods = Goods::model()->with($with_option)->findAll($criteria); 
Что-то типа такого.

Аватара пользователя
delvin
Сообщения: 85
Зарегистрирован: 2009.11.13, 15:29

Re: ORM и pagination. Как сделать?

Сообщение delvin » 2009.12.22, 05:16

Ну я так и сделал. Просто думал может можно как-то через
$brand->goods сделать пагинацию

Ответить