如何在不倾倒整个对象的情况下打印实体的单个值?

时间:2014-10-09 07:35:47

标签: php symfony doctrine-orm

我想从实体中获取一个值。任何人都可以帮助我。 这是我的代码。请告诉我这里缺少的内容。

$query = $em->createQuery("SELECT e FROM AdminBundle:MailTemplates e  WHERE e.keyword = '" .$keywordVal."'");
$query->execute();
$result = $query->getResult();
echo $result ->getId(); 

在这里,我想要' id'。

4 个答案:

答案 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));