如何测试Doctrine2 DQL查询是否产生有效结果


How to test if Doctrine2 DQL query results in a valid result?

function search_event($parish, $genre, $pricerange)
{
    $query = $this->em->createQuery('SELECT e from Events e WHERE e.parish = :parish AND e.genre = :genre');
    $query->setParameter('parish', $parish);
    $query->setParameter('genre', $genre);
    $result = $query->getResult();     
    return $result;
}

在上面的例子中,我如何测试$result是否有效?

您可以做很多事情来检查返回的集合中是否有实体。可使用的方法的完整列表见ArrayCollection。

// Is result empty?
$result->isEmpty();
// Is result count > 0?
0 < $result->count();
0 < count($result);
// Get the first entitiy
$first = $result->first(); // $first === false if none

如果getResult()返回(即如果它没有抛出异常),则$result 有效。(它总是一个结果数组;如果没有结果,可以为空。)

如果出现任何错误(错误查询,连接重置或其他),createQuery()getResult()抛出异常。