我刚刚阅读了官方的Symfony 3文档并指出当我需要从数据库中检索对象时我应该使用这样的东西:
$repository = $em->getRepository('AppBundle:Product');
这里Product只是一个没有父级的实体类,因此Doctrine通过注释来处理它。但我不确定用引号对模型名称进行硬编码是个好主意。如果稍后我总结命名模型 Good ,我应该搜索整个项目并替换Good on Good。以Laravel为例,每个模型都扩展了基础模型类,因此我可以编写:Product::model()->find('nevermind')
。 Symfony 3.3中有没有这样的选项?
答案 0 :(得分:4)
如果它是您问题的解决方案,我不会感到害羞,但您可以写下:
$repository = $em->getRepository(Product::class);
答案 1 :(得分:1)
publishMessageSource("market-data", ADDRESS, { record: Handler<AsyncResult<Unit>> ->
if (!record.succeeded()) {
record.cause().printStackTrace()
}
println("Market-Data service published : ${record.succeeded()}")
})
返回混合数据类型(取决于第一个参数)。即使您编写Type Mismatch required Handler<AsyncResult<Unit>> found (Handler<AsyncResult<Unit>>) -> Unit
,IDE也无法解析实际数据类型。我建议这个方法(伪代码):
$em->getRepository('...')
答案 2 :(得分:1)
您可以将存储库声明为如下服务:
services:
app.product_repo:
class: AppBundle\Entity\ProductRepository
factory: ['@doctrine.orm.default_entity_manager', getRepository]
arguments:
- AppBundle\Entity\Product
然后在你的控制器中:
$repository = $em->get('app.product_repo');
至少它适用于PHPStorm及其Symfony插件。实现服务的自动完成是必须的。