我已经根据symfony文档定义了我的自定义存储库,并按照这篇博客文章将它们定义为服务。这通常工作正常,除了有时我得到异常:
某些服务中的致命可抛掷错误.php第 20 行:类型错误:参数 3 传递给 SomeService::__construct() 必须是 SomeRepository, instance of Doctrine\ORM\EntityRepository 给定,在 var/cache/dev/appDevDebugProjectContainer.php 中调用 在线 7651
这种情况经常发生,通常清除缓存和原则元数据缓存可以解决它。但有时并非如此。
php app/console cache:clear
php app/console doctrine:cache:clear-metadata
我实际上不明白为什么会发生这种情况,或者在清除缓存不起作用的情况下如何修复它。我知道这个问题(或它的衍生物)已经被问了很多,比如这里,这里,这里,这里和这里。但是这些答案实际上都没有解决我的问题,因为据我所知,我已经正确定义了所有内容,而且我们还有一堆其他存储库以完全相同的方式定义,并且它们都工作正常。
# services.yml
app.repository.some:
class: AppBundleRepositorySomeRepository
factory: ["@doctrine.orm.default_entity_manager", getRepository]
arguments:
- AppBundleEntitySome
app.some_service:
class: AppBundleServicesSomeService
arguments:
- "@app.repository.some"
// Repository class
<?php
namespace AppBundleRepository;
use DoctrineORMEntityRepository;
class SomeRepository extends EntityRepository
{
}
// Entity class
<?php
namespace AppBundleEntity;
use DoctrineORMMapping as ORM;
/**
* @ORMEntity(repositoryClass="AppBundleRepositorySomeRepository")
* @ORMTable()
* @ORMEntity
*/
class Some
{
// Service class
<?php
namespace AppBundleServices;
use AppBundleRepositorySomeRepository;
class NotificationService
{
/** @var SomeRepository */
protected $someRepository;
public function __construct(
SomeRepository $someRepository,
) {
是否有其他缓存需要清除或我缺少某些内容?
去掉第二个@ORM\实体,它会正常工作