可捕获的致命错误:无法将EntityManager转换为字符串

时间:2014-12-31 20:20:51

标签: php symfony orm doctrine entitymanager

我想实现一些服务,我做的第一件事是将私有$ em定义为EntityManager,如下所示:

<?php

namespace Users\UsersBundle\Services;

use Doctrine\ORM\EntityManager;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Usuarios\UsersBundle\Entity\User;

/**
 * Class UserManager
 */
class UserManager
{
private $em;

/**
 * @param EntityManager $em
 */
public function __construct(EntityManager $em)
{
    $this->$em = $em;
}
}

在同一个类中使用EntityManager的函数示例:

/**
 * Find all posts for a given author
 *
 * @param User $author
 *
 * @return array
 */
public function findPosts(User $author)
{
    $posts = $this->$em->getRepository('BlogBundle:Post')->findBy(array(
            'author' => $author
        )
    );

    return $posts;
}

但是,当我调用任何函数时,例如上面显示的函数,我得到以下错误:Catchable Fatal Error:类Doctrine \ ORM \ EntityManager的对象无法转换为字符串。

我确实导入了这项服务。我错过了什么?提前感谢您的支持。

2 个答案:

答案 0 :(得分:2)

$this->$em 

应该是:

$this->em

$ this-&gt; $ em试图将$ em转换为字符串,当它是一个对象时。除非对象定义了__toString()方法,否则您将获得异常。

答案 1 :(得分:1)

而不是:

$posts = $this->$em->getRepository('BlogBundle:Post')->findBy(array(
        'author' => $author

试试这个:

$posts = $this->em->getRepository('BlogBundle:Post')->findBy(array(
        'author' => $author

请注意,我已将$ this-&gt; $ em更改为$ this-&gt; em。