【发布时间】:2015-11-10 17:45:11
【问题描述】:
我有一个实体 Follow 来处理用户实体实例之间的多对多关系。相关表的列如下所示:
关注(id, follower_id, followee_id)
当我执行以下查询时(为了获取特定用户的关注者):
$em= $this->entityManager;
$query = $em->createQuery(
'SELECT f
FROM MembersManagementBundle:Follow f
WHERE p.followee = :wee'
)->setParameter('wee', 1);
$n= $query->getResult();
它(通常)给我这样的结果:
array (size=4)
0 =>
object(Members\Bundle\ManagementBundle\Entity\Follow)[347]
private 'follower' =>
object(Members\Bundle\ManagementBundle\Entity\User)[283]
protected 'id' => int 2
.........
private 'followee' =>
object(Members\Bundle\ManagementBundle\Entity\User)[283]
protected 'id' => int 1
.........
1 =>
..........
虽然我想要类似的东西:
array (size=4)
0 => '2'
1 => '3'
.....
我尝试了SELECT f.follower_id、SELECT f.follower.id,但它们给了我语法错误。
它需要比我更高级的 DQL 和查询构建器知识,我正在从您这里的常规指导中寻求。提前致谢。
进展:
我设法使结果数组更小:
array (size=4)
0 =>
array (size=1)
'id' => int 2
1 =>
array (size=1)
'id' => int 3
2 =>
array (size=1)
'id' => int 4
3 =>
array (size=1)
'id' => int 5
但不像我原来的问题中提到的那样。如何去除主数组里面的数组?
$query = $em->createQuery(
'SELECT u.id
FROM MembersManagementBundle:Follow p, MembersManagementBundle:User u
WHERE p.followed = :wee
AND u.id= p.follower'
)->setParameter('wee', 1);
【问题讨论】:
标签: php sql symfony doctrine dql