Php 不在条令/符号中工作

Php 不在条令/符号中工作,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,以下是我所拥有的: $tag = $this->getEntityManager() ->getRepository('Model:Tag') ->createQueryBuilder('t') ->where('t.name LIKE :tag') ->setParameter('tag', '%' . $tag . '%') ->distinct() -

以下是我所拥有的:

    $tag = $this->getEntityManager()
        ->getRepository('Model:Tag')
        ->createQueryBuilder('t')
        ->where('t.name LIKE :tag')
        ->setParameter('tag', '%' . $tag . '%')
        ->distinct()
        ->getQuery();

    $tags = $tag->getResult();

    return $tags;
我将其作为JSON响应返回。结果是这样的:

["2000", "2000", "8000", "8000", "6000", "6000", "7000", "7000", "16000", "16000", "21000", "21000",…]
array (size=19)
  0 => 
    array (size=1)
      'name' => string '2000' (length=4)
  1 => 
    array (size=1)
      'name' => string '8000' (length=4)
  2 => 
    array (size=1)
      'name' => string '6000' (length=4)
  3 => 
    array (size=1)
      'name' => string '7000' (length=4)
  4 => 
    array (size=1)
      'name' => string '16000' (length=5)
  5 => 
    array (size=1)
      'name' => string '21000' (length=5)
  etc...
显然,
distinct()
不起作用。我是否正确地使用了它?我一定错过了一些非常明显的东西

欢迎提供任何建议。谢谢


编辑 我现在有:

    $tagQuery = $this->getEntityManager()
        ->getRepository('Model:Tag')
        ->createQueryBuilder('t')
        ->select('DISTINCT t.name')
        ->where('t.name LIKE :tag')
        ->setParameter('tag', '%' . $tag . '%')
        ->getQuery();

    $tags = $tagQuery->getResult();
这将返回一个不同的结果集,如下所示:

["2000", "2000", "8000", "8000", "6000", "6000", "7000", "7000", "16000", "16000", "21000", "21000",…]
array (size=19)
  0 => 
    array (size=1)
      'name' => string '2000' (length=4)
  1 => 
    array (size=1)
      'name' => string '8000' (length=4)
  2 => 
    array (size=1)
      'name' => string '6000' (length=4)
  3 => 
    array (size=1)
      'name' => string '7000' (length=4)
  4 => 
    array (size=1)
      'name' => string '16000' (length=5)
  5 => 
    array (size=1)
      'name' => string '21000' (length=5)
  etc...

所以我正朝着正确的方向前进。但是我如何返回一组结果,比如
[2000,8000,6000,…]
?除了我目前拥有的大量对象之外?

您可以发布发送到DB的查询吗?您可能有那么多不同的实体在某些序列化属性上共享相同的值。谢谢您的回复。我已经更新了上面的问题,以显示我的最新代码。我想你是对的Yoshi,但是我仍然没有得到我期望的结果。谢谢。关于更新。视情况而定,您可能需要一种序列化对象的方法。如果你经常需要这个,你可以试试。如果只是几次,只需在数组上迭代并映射所需的值(为了节省资源,可以使用
getArrayResult()
)。IanMcL:我想是这样的,是的-正如您在上面的编辑中所看到的,我稍微更改了查询。