我正在构建一个带有后端模块的扩展。当我打电话给findAll() 方法它返回一个“QueryResult”对象。
我尝试用以下方法检索对象查找按Uid() 并且它确实有效。
我在打字稿中设置了存储pid:
plugin.tx_hwforms.persistence.storagePid = 112
我还可以在打字稿对象浏览器中看到它。
我还将其添加到我的存储库类中:
public function initializeObject()
{
$defaultQuerySettings = $this->objectManager->get(\TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings::class);
$defaultQuerySettings->setRespectStoragePage(false);
$this->setDefaultQuerySettings($defaultQuerySettings);
}
这样存储pid就被忽略了...
它仍然不起作用,findAll 没有返回应有的实体数组
存储库must返回一个查询结果findAll
方法。仅返回单个对象的方法(findOneByXYZ
)将返回任何其他内容。
以下所有操作都会导致 QueryResult 加载其包含的实际结果。在执行其中一项操作之前,不会加载任何结果,并且调试 QueryResult 将不会产生除原始查询之外的任何信息。
$queryResult->toArray();
-
$queryResult->offsetGet($offset);
and $queryResult[$offset];
$queryResult->offsetExists($offset);
-
$queryResult->offsetSet($offset, $value);
and $queryResult[$offset] = $value;
(但请注意,自己使用 QueryResult 执行此操作是不合逻辑的)。
-
$queryResult->offsetUnset($offset);
and unset($queryResult[$offset]);
(同样,自己使用这个是不合逻辑的)
-
$queryResult->current()
, ->key()
, ->next()
, ->prev()
, ->rewind()
and ->valid()
它们都可以直接调用,或者在您开始迭代 QueryResult 时调用。
注意->getFirst()
and ->count()
不会导致原始查询触发,并且如果结果尚未填充,则不会填充结果。相反,他们将执行优化的查询。
Summa summarum:当您获得 QueryResult 时,您必须以某种方式触发它,这通常在您开始呈现结果集时发生。它不是一个预填充数组;它是一个动态填充的迭代器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)