奥梅卡:获取控制器中的所有项目


Omeka: Get all items in Controller

我正在编写一个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);
}

项目上有一个"公共"属性,它告诉您它是否是公共的。为了获得项目的元素文本,我认为您必须在ElementText表上进行查询。

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

http://omeka.readthedocs.io/en/latest/Reference/libraries/Omeka/Db/Table.htmlhttp://omeka.readthedocs.io/en/latest/Reference/models/Table/Item.htmlhttp://omeka.readthedocs.io/en/latest/Reference/models/Item.html