我想从实体中获取一个值。任何人都可以帮助我。 这是我的代码。请告诉我这里缺少的内容。
$query = $em->createQuery("SELECT e FROM AdminBundle:MailTemplates e WHERE e.keyword = '" .$keywordVal."'");
$query->execute();
$result = $query->getResult();
echo $result ->getId();
在这里,我想要' id'。
答案 0 :(得分:1)
documentation中注明了这一点。
所以,鉴于你的代码,这将成为:
$query = $em->createQuery("SELECT e.id FROM AdminBundle:MailTemplates e WHERE e.keyword = ?1");
$query->setParameter(1, $keywordVal);
$query->execute();
$result = $query->getResult(); // array of MailTemplates ids
注意:我还使用setParameters而不是直接在查询中设置值。
答案 1 :(得分:1)
在您的控制器中:
$this->get('database_connection')->fetchColumn('select id from mail_templates where...');
如果您不想与查询构建器和其他学说主义内容达成协议,那么性能会更好,也更容易。
答案 2 :(得分:0)
使用查询构建器,您可以...
$queryBuilder = $em->createQueryBuilder('e');
$queryBuilder
->select('e.yourColumn')
// This will return just this column
// Alternatively you could omit any select to return the whole object
// that you could then use like $object->getYourColumn() if you so chose
->where($queryBuilder->expr()->eq('e.keyword', ':keyword'))
->setParameter('keyword', $keyword)
;
return $queryBuilder
->getQuery()
->getResult();
答案 3 :(得分:-1)
尝试加载实体而不是创建自己的查询 使用存储库加载实体。
$rep = $this->getDoctrine()->getManager()->getRepository("Bundlename:Entity");
//find one by keyword -> single entity
$entity = $rep->findOneBy(array('keyword' => $keyword));
//find all by keyword - Array of entities
$result = $rep->findBy(array('keyword' => $keyword));