Я делал это бесчисленное количество раз сейчас, и, возможно, это потому, что автопроводка и внедрение зависимостей слишком сложны для меня, и мне просто нужно обойти это, но после последовательного поиска у меня все еще есть проблемы с пониманием правильного способа исправить это.
У меня есть этот класс, из которого я пытаюсь создать запрос - это все замечательно и хорошо, если я расширяю «Контроллер» - как только я отклоняюсь от этого, я либо получаю:
$em = new EntityManagerInterface();
$query = $this->em->createQuery('SELECT m FROM App:Main m')
->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
print_r($query);
Это очевидно, вы не можете создать экземпляр интерфейса
Невозможно установить интерфейс Doctrine \ ORM \ EntityManagerInterface
Или:
Use App\Util\Db\Dbhelper;
$db = $this->container->get(DbHelper::class);
$result = $db->allMains();
Слишком мало аргументов для функции App \ Util \ Db | DbHelper :: __ construct (), 0 передано 1 ожидается
Другие классы ожидаютВнедрение зависимостей EntityManagerInterface очевидно.Вся помощь очень ценится, я не знаю, почему я не могу правильно обернуть голову вокруг этого.
Класс DbHelper:
namespace App\Util\Db;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use App\Entity\Main;
class DbHelper
{
protected $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
public function getNames()
{
$names = $this->em->getRepository(Main::class)->findAll();
foreach ($names as $name) {
echo $name->getName();
}
}
}