Я пишу Плагин Omeka и хочу получить список всех открытых Предметов со всеми их элементами в контроллере под моим плагином.
я пробовал get_items () но функция не существует, похоже, что функция доступна только для представлений — не знаю, как.
другой попыткой было вручную извлечь записи из базы данных, но это не стандартный способ.
Итак, вопрос в том, есть ли предопределенная функция / класс или способ получить все элементы в контроллере?
Я не уверен, есть ли функция, которая доставит вам элементы вместе со всеми их текстами элементов, но если вы хотите получить список элементов, внутри контроллера вы сможете сделать такой вызов:
$items = $this->_helper->db->getTable('Item')->findAll();
Документы Omeka предупреждают о том, что нельзя получать все предметы сразу, потому что это может занять много памяти. Таким образом, в качестве альтернативы, вы можете перебирать элементы.
$items = $this->_helper->db->getTable('Item');
$item = $items->findFirst();
while($item != NULL){
// Do something
$item = $items->findNext($item);
}
Для элемента есть свойство public, которое сообщает вам, является ли оно открытым. Для того, чтобы получить текст элемента для элемента, я думаю, вам нужно сделать запрос на ElementText
Таблица.
Для получения дополнительной информации, см. Omeka, прочитайте страницу документации для Table_Item
, Omeka_Db_Table
а также Item
:
http://omeka.readthedocs.io/en/latest/Reference/libraries/Omeka/Db/Table.html
http://omeka.readthedocs.io/en/latest/Reference/models/Table/Item.html
http://omeka.readthedocs.io/en/latest/Reference/models/Item.html
Других решений пока нет …