symfony新手。我正在关注this文档。我从另一个应用程序导入的表中映射了多个实体,这些实体没有自动创建存储库,并且有许多实体可以手动完成。但是,我想创建一个连接多个实体的单一存储库类。
根据文档我目前的存储库是
Product repository
class ProductRepository extends ServiceEntityRepository
{
public function __construct(RegistryInterface $registry)
{
parent::__construct($registry, Product::class);
}
我将在我的控制器中使用它,如
$respository = $this->getDoctrine()->getRepository(Product::class);
但是我也有其他实体类,
Customer, User
仅举几例。
如何或仅可以使用Product Respository
与其他实体(如
$respositoryUser = $this->getDoctrine()->getRepository('User');
或是否可以从现有实体自动生成存储库。
答案 0 :(得分:0)
您可以像生产产品一样为任何实体创建存储库。 这将工作并为用户提供标准的实体存储库:
$userRepository = $this->getDoctrine()->getRepository(User::class);
如果您想要找到需要更多计算的特定内容,您可以创建一个专用存储库。除非您想将其直接注入控制器或服务,否则您仍将以相同的方式获取存储库。如果是这种情况,只需在您的实体中指定存储库。
答案 1 :(得分:0)
看起来您正在寻找在Java / Persistence等其他环境中使用的等效设施...... 我认为你所看到的是一组相关实体的DaoService,而不是共享的存储库。 Custom Repository类按定义绑定到类实体,尝试共享其功能将以映射混淆结束。
通过围绕DaoService类组织代码,您将有机会在一个位置重新组合有关这些实体的所有数据访问。
将通用存储库用于组中的每个实体
$ userRepo = $ this-> em-> getRepository(User :: class)
$ prodRepo = $ this-> em-> getRepository(Product :: class)
因为你看到了你需要的壮举......