Php Can原则';s resolve_target_实体是否用于发现存储库?
我在两个项目(ProjectA和ProjectB)上使用Symfony 2.8.3和条令2.4.8,并希望在我的捆绑包(SharedBundle)中创建共享服务 该服务需要在数据库上运行,因此我认为可以使用config.yml中的resolve_target_entities指令从SharedBundle访问我的项目存储库(在ProjectA和ProjectB中定义) 存储库如下所示:Php Can原则';s resolve_target_实体是否用于发现存储库?,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我在两个项目(ProjectA和ProjectB)上使用Symfony 2.8.3和条令2.4.8,并希望在我的捆绑包(SharedBundle)中创建共享服务 该服务需要在数据库上运行,因此我认为可以使用config.yml中的resolve_target_entities指令从SharedBundle访问我的项目存储库(在ProjectA和ProjectB中定义) 存储库如下所示: <?php namespace My\ProjectA\Repository; class FooR
<?php
namespace My\ProjectA\Repository;
class FooRepository extends \Doctrine\ORM\EntityRepository
{
// ...
}
$repository = $this->entityManager->getRepository(\My\SharedBundle\Model\FooInterface::class);
$repository = $this->entityManager->getRepository(\My\SharedBundle\Model\AbstractFoo::class);
所以我创建了一个界面:
<?php
namespace My\SharedBundle\Model;
interface FooInterface
{
}
这引发了:
类“My\SharedBundle\Model\FooInterface”不存在
第二次尝试-抽象实体
app/config.yml
doctrine:
orm:
# ...
resolve_target_entities:
My\SharedBundle\Model\AbstractFoo: My\ProjectA\Entity\Foo
我创建了一个抽象实体
<?php
namespace My\SharedBundle\Model;
abstract class AbstractFoo
{
// ...
}
但这会引发:
在链配置的命名空间My\ProjectA\Entity中找不到类“My\SharedBundle\Model\AbstractFoo”
这仅适用于条令关系吗?条令绑定的
解析对象\u实体
仅适用于条令关系
实际上,您不需要使用它将不同的类(即在两个应用程序中)映射到同一个数据库表
你应该用它来代替
创建一个映射的超类
类a
(在两个应用程序中都存在),该超类由类B
(仅在应用程序1中存在)和类C
(仅在应用程序2中存在)扩展。这似乎与我的第二种方法类似,但我没有在原则yml中定义任何继承。我试试看,然后尽快告诉你。
<?php
namespace My\SharedBundle\Model;
abstract class AbstractFoo
{
// ...
}
<?php
namespace My\ProjectA\Entity;
class Foo extends AbtractFoo
{
// ...
}
$repository = $this->entityManager->getRepository(\My\SharedBundle\Model\AbstractFoo::class);