我想为一个实体使用2个仓库。
原因是:我有2个捆绑包,两个捆绑包都使用同一个实体。我希望将它们的功能分开。有时我需要在其中一个捆绑包中执行特定查询。
是否可以在一个捆绑包中拥有1个仓库,并在另一个捆绑包中拥有第二个仓库?也许这是错误的方法?
如果有人有想法,请建议。
谢谢!
我想为一个实体使用2个仓库。
原因是:我有2个捆绑包,两个捆绑包都使用同一个实体。我希望将它们的功能分开。有时我需要在其中一个捆绑包中执行特定查询。
是否可以在一个捆绑包中拥有1个仓库,并在另一个捆绑包中拥有第二个仓库?也许这是错误的方法?
如果有人有想法,请建议。
谢谢!
我会创建两个仓库。将所有方法添加到一个仓库中没有意义,只是因为它们共享实体。这样我们可能会在每个仓库中拥有30种方法。
namespace App\Repository;
use App\Entity\Post;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\EntityRepository;
final class FrontendPostRepository
{
/**
* @var EntityRepository
*/
private $repository;
public function __construct(EntityManagerInterface $entityManager)
{
$this->repository = $entityManager->getRepository(Post::class);
}
/**
* @return Post[]
*/
public function getAll(): array
{
// ...
}
}
namespace App\Repository;
use App\Entity\Post;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\EntityRepository;
final class AdminPostRepository
{
/**
* @var EntityRepository
*/
private $repository;
public function __construct(EntityManagerInterface $entityManager)
{
$this->repository = $entityManager->getRepository(Post::class);
}
/**
* @return Post[]
*/
public function getUnpublished(): array
{
// ...
}
}
@ORM\Entity(repositoryClass="")
的方法。个人而言,我会尝试使用这两个类,然后就能明确下一步该怎么做了。你已经在创建一个大型仓库之前停止了,所以这可能是你要走的路。 - Tomas Votrubarenting.metadata.car:
class: Doctrine\ORM\Mapping\ClassMetadata
arguments: [ %car% ]
而这个:
repair.repository.car:
class: carRepository
arguments: [@doctrine.orm.entity_manager, @renting.metadata.car]
那个起作用了