Я хотел реализовать некоторые службы, и первым делом я определил закрытый $ 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 не может быть преобразован в строку.
Я импортировал сервис. Что мне не хватает? Спасибо заранее за вашу поддержку.
Вместо этого:
$posts = $this->$em->getRepository('BlogBundle:Post')->findBy(array(
'author' => $author
попробуй это:
$posts = $this->em->getRepository('BlogBundle:Post')->findBy(array(
'author' => $author
Обратите внимание, что я изменил с $ this -> $ em на $ this-> em.
$this->$em
Должно быть:
$this->em
$ this -> $ em пытается преобразовать $ em в строку, когда это объект. Если объект не имеет __нанизывать() Определенный метод, вы получите исключение.