如何在symfony2中使用doctrine findOneBy方法返回一个数组而不是一个对象?

iri*_*rei 4 php arrays doctrine symfony

我有一种情况,我想用symfony2中的doctrine中的findOneBy($ id)方法查询数据库.

$namePosting = $this->getDoctrine()->getRepository('MyBundle:Users')->findOneById($userPosting);
Run Code Online (Sandbox Code Playgroud)

结果是具有受保护属性的对象.我想直接将它返回一个数组.如何才能做到这一点 ?

Ioa*_*sda 10

findOneBy(array()) 将始终返回null或object.

但是您可以使用findById($userPosting)或者findBy(array('id' => $userPosting))它将返回一个数组,例如:

$this->getDoctrine()->getRepository('MyBundle:Users')->findById($userPosting))
Run Code Online (Sandbox Code Playgroud)

编辑

或者您可以在UserRepository课程中添加方法:

    use Doctrine\ORM\EntityRepository;
    use Doctrine\ORM\Query;

    class UserRepository extends EntityRepository
    { 
        public function getUser($userPosting)
        {
           $qb = $this->createQueryBuilder('u')
             ->select('u')
             ->where('u =:userPosting')->setParameter('userPosting', $userPosting)
             ->getQuery()
             ->getResult(Query::HYDRATE_ARRAY);

           return $qb;
        }   
    }
Run Code Online (Sandbox Code Playgroud)

  • 您可以在存储库中创建自定义查询,并在其上调用getResult(Querry :: HYDRATE_ARRAY).请看我编辑的帖子. (2认同)