Omeka:获取控制器中的所有项目

Omeka: Get all items in Controller

我正在编写一个 Omeka 插件,并希望在我的插件下的控制器中获取所有 public 项及其所有元素的列表。

我试过 get_items() 但该功能不存在,看起来该功能仅适用于视图 - 不确定如何。

另一种尝试是手动从数据库中获取记录,但这不是标准方法。

所以,问题是,是否有预定义的 function/class 或方法来获取控制器中的所有项目?

我不确定是否有一个函数可以让你获得项目及其所有元素文本,但如果你想要一个项目列表,在控制器内部你应该能够像:

$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" 属性,告诉您它是否是 public。为了获取项目的元素文本,我认为您必须对 ElementText table.

进行查询

有关详细信息,请参阅 Table_ItemOmeka_Db_TableItem 的 Omeka 阅读文档页面:

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