我对Symfony2中模型(实体)持久性的概念感到非常困惑。 AFAIK,Symfony2中没有类似于model_instance-> save()的东西。相反,它必须通过检索doctrine实体管理器在控制器中调用,然后保持model_instance并刷新model_instance。
事实上,如果我想编写一个定期调用以保持模型的脚本,这似乎是不可能的,因为它必须调用控制器,但我不明白为什么脚本需要Web服务器存在,但不仅仅是在不触及Web服务器的情况下处理对象模型。
我真的很感激如何解决上述问题。谢谢!
答案 0 :(得分:3)
你是对的,Doctrine2是DataMapper模式的实现。因此,这些概念与Doctrine1和Propel等其他ORM实现的ActiveRecord不同。
默认情况下,当您创建具有某种关系的实体时,您必须手动将主要实体和保持为关系。但是你可以改变这种激活持久性级联的行为:
答案 1 :(得分:2)
在你的评论中,你提到了测试。这里有一个关于测试学说的食谱库:http://symfony.com/doc/current/cookbook/testing/doctrine.html
Symfony2实际上是一个解耦的库。虽然使用doctrine的默认方式是通过控制器,但您可以直接加载doctrine库。我不确定你是如何自己访问教条包的,但我确信上面文章中的例子对此有帮助。
此外,Fabien Potencier(symfony的首席开发人员)最近发表了一篇关于Symfony是一堆可以独立使用的捆绑包的演讲。他介绍了如何使用大部分捆绑包的基础知识。您可以在此处查看:http://symfony.com/video/Paris2011/583