我正在尝试使用网址中的两个项目检索内容。这是应该执行的php / symfony代码:
$em = $this->getDoctrine()->getEntityManager();
$repository = $this->getDoctrine()
->getRepository('ShoutMainBundle:Content');
$query = $repository->createQueryBuilder('p')
->where('p.slug > :slug')
->andWhere('p.subtocontentid > :parent')
->setParameters(array(
'slug' => $slug,
'parent' => $page
))
->getQuery();
$content = $query->getSingleResult();
但是,执行此代码时,它会返回以下错误:
虽然预计至少有一行,但未找到查询结果。
我做了一些测试,$slug
和$page
变量中保存的数据保存了正确的信息。我还测试了MySQL查询,查询提出了所需的结果,这让我更加困惑。
我错过了什么吗?
答案 0 :(得分:8)
回答here
您收到此错误是因为您正在使用
getSingleResult()
方法。如果无法找到,它会生成异常 甚至一个结果。您可以使用getOneOrNullResult()
代替 如果查询中没有任何结果,则获取NULL。查询#getSingleResult(): 检索单个对象。如果结果 包含多个对象,抛出NonUniqueResultException。 如果结果不包含任何对象,则抛出NoResultException。该 纯/混合区别不适用。
答案 1 :(得分:3)
您不想使用“=”而不是“>” ?
答案 2 :(得分:3)
虽然预计至少有一行,但未找到查询结果。
另一个原因可能是:
你这样做了
$query = $this->getEntityManager()
->createQuery('
SELECT u FROM MyBundle:User u
WHERE u.email = :email')
->setParameter('email', $email);
return $query->getSingleResult();
而不是这个
$query = $this->getEntityManager()
->createQuery('
SELECT u FROM MyBundle:User u
WHERE u.email = :email')
->setParameter('email', $email);
$query->setMaxResults(1);
return $query->getResult();
答案 3 :(得分:0)
如果由于使用而收到此消息
<div class="drawer">
<header>
</header>
<ul>
<li>
<div class="list_item">
<div class="details">
<svg>
<span>somettttttttttttttttttttttt</span>
</div>
<timestamp/>
</div>
</li>
</ul>
</div>
.drawer {
display: flex;
flex-direction: column;
position: absolute;
width: 320px;
top: 55px;
right: 18px;
min-height: 40%;
max-height: 80%;
overflow: scroll;
overflow-x: hidden;
header {
min-height: 38px;
border-bottom: 1px solid #CCCCCC;
display: flex;
align-items: center;
justify-content: space-between;
padding-right: 0px;
padding-top: 2px;
}}
.list_item {
display: flex;
flex-direction: row;
align-items: center;
padding: 4px;
svg {
margin-right: 6px;
}
.details {
flex-grow: 1;
align-items: center;
}}
您可以将其替换为下面的行
$content = $query->getSingleResult();