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:我想是这样的,是的-正如您在上面的编辑中所看到的,我稍微更改了查询。