TYPO3 QueryRepository returns 为空,不能用作条件

TYPO3 QueryRepository returns empty and can not use it as condition

我在我的存储库文件中创建了一个查询,用于搜索具有特定值的对象。例如:

/**
     * @param int $uid
     * @param string $value
     * @param int $someIntValue
     *
     * @return array|\TYPO3\CMS\Extbase\Persistence\QueryResultInterface
     */
    public function findByFields($uid, $value, $someIntValue)
    {
        $query = $this->createQuery();
        $query->getQuerySettings()->setRespectStoragePage(FALSE);
        $query->matching(
            $query->logicalAnd(
                [
                    $query->equals('some_field', $uid),
                    $query->equals('value', $value),
                    $query->equals('some_other_field', $someIntValue)
                ])
        );
        return $query->execute();

现在这给了我一个空对象,这很好,因为我在数据库中没有任何符合要求的东西。

但是如果我想添加一个条件来评估对象是否为空,则它不起作用。

我任务中的代码

$getObjects = $someRepository->findByFields($oldObject->getUid(), $oldObject->getValue, $oldObject->getExternalValue);

if(empty($getObjects))
{
    // do something
}
else 
{
    // do something else
}

此处无法将对象评估为空,因为它实际上不是空的。如果我将它转换为一个数组:(只是为了看看里面有什么)

$typecasted = (array)$getObjects;

它返回 "empty" 对象中存在的内容。 (var_dump)

*dataMapper => TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper singleton object filtered
*persistenceManager => TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager singleton object filtered
*numberOfResults => NULL
*query => TYPO3\CMS\Extbase\Persistence\Generic\Query prototype object
*queryResult => NULL

问题:

如何使条件生效?

我找到了解决方法。

如果没有找到TYPO3 returns查询。我所要做的就是:

if($query->execute()->count())
{
   return $query->execute();
}
else 
{
   return NULL;
}

这是做什么的,它评估是否有可用的对象。如果是,那么它会返回对象。如果不是,它将结果设置为 NULL 并且可以使用该条件。

编辑:

以上方法有效,但在@Mathias Brodala 的推荐下,我也尝试了类似的方法。

if (count($getObjects) > 0)
{
    \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump('exists');
} else {
    \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump('does not exist');
} 

两种方式都行。任你选。

感谢@Mathias Brodala