我正在使用symfony2和doctrine。我只想检查表中是否存在特定行。 如果存在,则无需返回该实体的对象。 例如,如果我使用这样的东西来检查是否有人使用$ clientIp的ip访问视频 我只是想要正确或错误的VideoVisit实例。
$query = $this->getEntityManager()->createQuery(
'SELECT v FROM MjVideoBundle:VideoVisit v'
. ' WHERE v.video=:videoId'
. ' AND v.ip=:clientIp')
->setParameters(array(
'videoId'=> $videoId,
'clientIp' => $clientIp));
try{
$result = $query->getSingleResult();
} catch (\Doctrine\Orm\NoResultException $ex) {
$result = false;
}
if($result == false){
//do something
}
else{
//do something else
}
答案 0 :(得分:0)
这是你正在做的很多工作。尝试使用更简单的Doctrine functions that are already provided to you:
$video = $this->getDoctrine()->getRepository('MjVideoBundle:Video')->find($videoId);
$result = $this->getDoctrine()->getRepository('MjVideoBundle:VideoVisit')->findOneBy(
array('video' => $video, 'clientIp' => $clientIp)
);
if ($result) {
// do something if found
} else {
// do something if not found
}
注意你也必须使用视频对象进行搜索,你不只是在where条件下搜索视频ID(除非你没有正确设置你的关联映射。)我假设你的名字Video
实体,并假设$videoId
始终有效。