2011-01-23 2 views
4

Книги имеет следующие поляКак постраничной две таблицы в рамках ZEND

  • book_id
  • book_name
  • book_auther
  • book_pub_date

категория таблица имеет

  • category_id
  • имя_категории

размещения таблица имеет

  • PLACEMENT_ID
  • placement_category_id (ФК)
  • placement_book_id (ФК)

Теперь мы хотим использовать разбиение на страницы в индексном контроллере на . Выберите книги с определенной категорией?
все таблицы находятся в одной базе данных


Примечание: Я отделил модели для каждой таблицы и все таблицы связаны друг с другом с $ _referenceMap
Я использую $ адаптер = новый Zend_Paginator_Adapter_DbTableSelect ($ выберите);
вопрос: как сделать $ select?

ответ

0

Вы можете использовать этот постраничной класс:

http://www.catchmyfame.com/2007/07/28/finally-the-simple-pagination-class/

это действительно прост в установке и использовании, а затем применить его к объединенном запрос, который выбирает все книги из определенной категории (которые многие здесь лучше объяснил бы мне).

+0

plz см. Новый текст добавить – 3ehrang

3

У вас есть отношение «многие ко многим» между книгами и категориями, а таблица размещения - таблица пересечений. Таким образом, я думаю, что один из способов вашего $ выбора может быть построен используют внутреннее соединение следующим образом:

$placementModel = new Your_Model_Table_Placement(); 

    $select = $placementModel->select(Zend_Db_Table::SELECT_WITH_FROM_PART)->setIntegrityCheck(false); 
    $select->joinInner('BOOKS', 'BOOKS.book_id = PLACEMENT.placement_book_id'); 
    $select->where('PLACEMENT.placement_category_id = ?', $categoryID); 

    $adapter = new Zend_Paginator_Adapter_DbTableSelect($select); 

    // check the result if they are what you expect 
    var_dump($adapter->getItems(0, 5)->toArray()); 

Конечно же имена таблиц и моделей должны соответствовать вашим настоящим имена. Другим способом было бы создать представление в вашей базе данных. Затем вы создадите модель для представления. Это сделало бы $ select короче.

+0

Спасибо, решает мое дело – 3ehrang

+0

@Behrang. Рад, что смог помочь. – Marcin

Смежные вопросы