Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从SonataUserBundle中的用户获取组?_Php_Sql_Symfony_Query Builder_Sonata User Bundle - Fatal编程技术网

Php 如何从SonataUserBundle中的用户获取组?

Php 如何从SonataUserBundle中的用户获取组?,php,sql,symfony,query-builder,sonata-user-bundle,Php,Sql,Symfony,Query Builder,Sonata User Bundle,我在devmaster中使用symfony2.2.3和sonataadmin 我想要一个自定义字段来显示特定组的用户 我还没有找到如何建立与Sonata用户实体和Sonata组实体的关系 条令模式创建3个表:fos_用户、fos_用户组和关系表fos_用户组 我有一个表单,在我的管理类中有这样一个字段: ->add('coach', 'entity', array( 'class' => 'ApplicationSona

我在devmaster中使用symfony2.2.3和sonataadmin

我想要一个自定义字段来显示特定组的用户

我还没有找到如何建立与Sonata用户实体和Sonata组实体的关系

条令模式创建3个表:fos_用户、fos_用户组和关系表fos_用户组

我有一个表单,在我的管理类中有这样一个字段:

->add('coach', 'entity', array(
                                'class' => 'ApplicationSonataUserBundle:User',
                                'empty_value' => 'Choisissez un coach',
                                'property' => 'username',
                                'query_builder' => function(\Application\Sonata\UserBundle\Entity\UserRepository $er) {
                                    return $er->getCoachs();
                                },
                            ))
以及UserRepository中的函数getCoachs():

public function getCoachs()
{
    $em = $this->getEntityManager();
    $qb = $em->createQueryBuilder(array('u', 'g'))
                ->select('u.username, g.id')
                ->from('ApplicationSonataUserBundle:User', 'u')
                ->innerJoin('ApplicationSonataUserBundle:Group', 'g', 'WITH','g.id = u.group_id') 
                ->where('g.id = :id')
                ->setParameter('id', 1);



    return $qb;
}
我知道查询不起作用,因为innerJoin不正确

我的用户实体和组实体只是用id扩展了BaseUser和GroupUser

有人知道正确的问题吗

多谢各位

编辑:

好的,我找到了查询的解决方案:

public function getCoachs()
{
    $em = $this->getEntityManager();
    $qb = $em->createQueryBuilder('u')
                ->select('u.username')
                ->from('ApplicationSonataUserBundle:User', 'u')
                ->innerJoin('u.groups', 'g') 
                ->where('g = :id')
                ->setParameter('id', 1);

    return $qb;
}
但是,我有一个错误:

Expected argument of type "object or array", "string" given
我不明白,因为我返回了函数getCoachs(),它返回一个查询生成器


不知道?

好的,我找到了解决办法

我的问题是:

public function getCoachs()
{
    $em = $this->getEntityManager();
    $qb = $em->createQueryBuilder('u')
            ->select('u') // and not u.username
            ->from('ApplicationSonataUserBundle:User', 'u')
            ->innerJoin('u.groups', 'g') 
            ->where('g = :id')
            ->setParameter('id', 1);

    return $qb;
}
事实上,我返回了特定列(用户名)的值,但您必须返回对象用户