在Symfony 3中组织模型



我刚刚阅读了官方的Symfony 3文档,并指向我需要从数据库中检索对象时,我应该使用类似的东西:

$repository = $em->getRepository('AppBundle:Product');

这里的产品只是一个没有父母的实体类,因此可以通过注释将其与之合作。但是我不确定在引号中编码模型名称是一个好主意。如果以后我得出结论以命名模型 good ,我应该搜索整个项目并以良好的方式替换产品。例如,我例如,每个模型都扩展了基本模型类,因此我可以写:Product::model()->find('nevermind')。Symfony 3.3?

中是否有任何这样的选择

如果这是解决问题的解决方案,我不会编写:

$repository = $em->getRepository(Product::class);

$em->getRepository('...')返回混合的数据类型(取决于第一个参数(。即使您编写$repository = $em->getRepository(Product::class); IDE也无法解析实际数据类型。我建议此方法(伪代码(:

/**
 * Get product repo
 *
 * @return ProductRepository
 */
 public function getProductRepository() 
 {
     return $this->getEntityManager()->getRepository(Product::class);
 }
 /**
  * @return DoctrineORMEntityManager
  */
 public function getEntityManager(): EntityManager
 {
     return $this->getDoctrine()->getManager();
 }

您可以将存储库声明为这样的服务:

services:
    app.product_repo:
        class: AppBundleEntityProductRepository
        factory: ['@doctrine.orm.default_entity_manager', getRepository]
        arguments:
            - AppBundleEntityProduct

然后在您的控制器中:

$repository = $em->get('app.product_repo');

至少它可以与phpstorm及其Symfony插件一起使用。拥有自动完成服务确实是必须的。

相关内容

  • 没有找到相关文章

最新更新