我已根据symfony docs定义了自定义存储库,并按照此blog post将其定义为服务。这通常很好,除非有时我得到例外:
SomeService.php第20行中的FatalThrowableError:类型错误:参数3 传递给SomeService :: __ construct()必须是。的实例 SomeRepository,Doctrine \ ORM \ EntityRepository的实例 给定,在var / cache / dev / appDevDebugProjectContainer.php中调用 7651
这种情况发生了很多,通常清除缓存和doctrine元数据缓存解决了它。但有时却没有。
php app/console cache:clear
php app/console doctrine:cache:clear-metadata
我实际上并不理解为什么会发生这种情况或者在清除缓存不起作用的时候如何修复它。我知道这个问题(或其衍生物)已被提出很多问题,例如here,here,here,here和here。但是这些答案都没有解决我的问题,因为据我所知,我已经正确地定义了所有内容,我们还有一堆其他存储库以完全相同的方式定义,它们都可以正常工作。
# services.yml
app.repository.some:
class: AppBundle\Repository\SomeRepository
factory: ["@doctrine.orm.default_entity_manager", getRepository]
arguments:
- AppBundle\Entity\Some
app.some_service:
class: AppBundle\Services\SomeService
arguments:
- "@app.repository.some"
// Repository class
<?php
namespace AppBundle\Repository;
use Doctrine\ORM\EntityRepository;
class SomeRepository extends EntityRepository
{
}
// Entity class
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="AppBundle\Repository\SomeRepository")
* @ORM\Table()
* @ORM\Entity
*/
class Some
{
// Service class
<?php
namespace AppBundle\Services;
use AppBundle\Repository\SomeRepository;
class NotificationService
{
/** @var SomeRepository */
protected $someRepository;
public function __construct(
SomeRepository $someRepository,
) {
是否有其他需要清除的缓存或我遗漏的东西?
答案 0 :(得分:2)
摆脱第二个@ORM \ Entity,它会正常工作