我正在编写一个Omeka插件,并希望在我的插件下的控制器中获取所有公共项目的列表及其所有元素。
我已经尝试get_items()但该功能不存在,看起来该功能仅适用于视图 - 不确定如何。
另一种尝试是从数据库手动获取记录,但这不是标准方法。
所以,问题是,是否有预定义的函数/类或方法来获取控制器中的所有项目?
答案 0 :(得分:0)
我不确定是否有一个函数可以将项目及其所有元素文本一起提供给你,但是如果你想要一个项目列表,你可以在控制器内部进行如下调用: / p>
$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);
}
项目上有一个“公共”属性,告诉您它是否公开。为了获取项目的元素文本,我认为您必须在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