我现在已经做过无数次了,也许是因为自动装配和依赖注入对我来说太复杂了,我只需要解决它,但是经过不断的搜索之后,我仍然在理解正确的解决方法上遇到了问题
我有一个试图从中创建查询的类-只要扩展“ Controller”,这一切都很好,只要我偏离了它,我就会得到:
$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();
}
}
}