Symfony 5 - 一个实体,一个存储库和两个数据库
Symfony 5 - One entity, one Repository and two Databases
我在通过 Symfony 存储库查询我的数据库时遇到问题。
如果我不指定存储库
/**
* ProductsText
*
* @ORM\Table(name="products_text")
* @ORM\Entity
*/
我可以 select 我的一个数据库通过这样使用 Doctrine:
->getRepository(ProductsText::class, "db1").
但是如果我声明存储库:
/**
* ProductsText
*
* @ORM\Table(name="products_text")
* @ORM\Entity(repositoryClass="App\Repository\Product\ProductsTextRepository")
*/
它只是 select 我从中提取实体的数据库。
我不能使用两个不同的实体,因为用户 select 在登录时是“数据库”。不幸的是,我也不能合并这两个数据库,因为它们不是多租户。
我的猜测是,我可以通过将注册表从一般存储库中保留下来来解决问题。不幸的是,我之前的尝试以前端不再加载而告终。
有效,但仅适用于一个数据库:
class ProductsTextRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, ProductsText::class);
}
无效:
class TbProductsTextRepository
{
/**
* @var EntityRepository
*/
private $repository;
public function __construct(EntityManagerInterface $entityManager)
{
$this->repository = $entityManager->getRepository(TbProductsText::class);
}
不幸的是,我不了解存储库的重新生成机制。
我使用:
- Symfony 5.2
- 学说 2.2
- 学说 ORM 2.8
- Doctrine 迁移包 3.0
我通过不“注册”存储库解决了这个问题。
通过使用 EntityRepository 而无需构造,我可以将存储库用于两个数据库。
use Doctrine\ORM\EntityRepository;
class TbProductsTextRepository extends EntityRepository
{
我在通过 Symfony 存储库查询我的数据库时遇到问题。 如果我不指定存储库
/**
* ProductsText
*
* @ORM\Table(name="products_text")
* @ORM\Entity
*/
我可以 select 我的一个数据库通过这样使用 Doctrine:
->getRepository(ProductsText::class, "db1").
但是如果我声明存储库:
/**
* ProductsText
*
* @ORM\Table(name="products_text")
* @ORM\Entity(repositoryClass="App\Repository\Product\ProductsTextRepository")
*/
它只是 select 我从中提取实体的数据库。 我不能使用两个不同的实体,因为用户 select 在登录时是“数据库”。不幸的是,我也不能合并这两个数据库,因为它们不是多租户。
我的猜测是,我可以通过将注册表从一般存储库中保留下来来解决问题。不幸的是,我之前的尝试以前端不再加载而告终。
有效,但仅适用于一个数据库:
class ProductsTextRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, ProductsText::class);
}
无效:
class TbProductsTextRepository
{
/**
* @var EntityRepository
*/
private $repository;
public function __construct(EntityManagerInterface $entityManager)
{
$this->repository = $entityManager->getRepository(TbProductsText::class);
}
不幸的是,我不了解存储库的重新生成机制。
我使用:
- Symfony 5.2
- 学说 2.2
- 学说 ORM 2.8
- Doctrine 迁移包 3.0
我通过不“注册”存储库解决了这个问题。 通过使用 EntityRepository 而无需构造,我可以将存储库用于两个数据库。
use Doctrine\ORM\EntityRepository;
class TbProductsTextRepository extends EntityRepository
{