Tag: doctrine2

在Doctrine2查询中使用限制和偏移

我试图做分页,但有一个错误: [语法错误]第0行,第57列:错误:预期的string结束,得到“限制” 我不太确定这是否是正确的语法(和逻辑),使我的查询: public function getFriendsFromTo ($user, $limit, $offset) { return $this->getEntityManager() ->createQuery('SELECT f FROM EMMyFriendsBundle:Friend f WHERE f.user='.$user.' limit '.$limit. 'offset' .$offset) ->getResult(); } 朋友和用户是相关的manyToOne和oneToMany,所以在朋友表中有一个字段 – user_id。 这是在我的控制器中: $user = $this->get('security.context')->getToken()->getUser(); $id = $user->getId(); $friends = $user->getFriends(); $result = count($friends) $FR_PER_PAGE = 7; $pages = $result/$FR_PER_PAGE; $em = $this->getDoctrine()->getEntityManager(); $friends = $em->getRepository('EMMyFriendsBundle:Friend') ->getFriendsFromTo($id, $FR_PER_PAGE, […]

如何使用PHPUnit在Symfony2中设置数据库繁重的unit testing?

我对testing世界相当陌生,我想确保自己走在正确的道路上。 我正在尝试使用phpunit在symfony2项目中设置unit testing。 PHPUnit正在工作,简单的默认控制器testing工作正常。 (然而,这不是关于functiontesting,而是unit testing我的应用程序。) 尽pipe我的项目很大程度上依赖于数据库交互,而据我所知,从phpunit的文档中 ,我应该build立一个基于\PHPUnit_Extensions_Database_TestCase ,然后为我的数据库创build灯具,并从那里工作。 然而, symfony2只提供了一个WebTestCase类,它只能从\PHPUnit_Framework_TestCase开箱即用。 那么我是否应该假设我应该创build自己的DataBaseTestCase ,它主要复制WebTestCase ,区别在于它从\PHPUnit_Extensions_Database_TestCase扩展并实现了它的所有抽象方法? 还是有另一个“内置的” symfony2推荐的工作stream程涉及到数据库为中心的testing? 因为我想确保我的模型存储和检索正确的数据,所以我不希望最后偶然地检验教义的细节。

Doctrine2版本库是保存实体的好地方吗?

当我阅读有关存储库的文档时,通常是以“只读”方式处理实体和集合。 从来没有例子存储库有像insertUser(User $user)或updateUser(User $user) 。 但是,在使用SOA时,服务不应该与实体pipe理器一起工作(是的,不是吗?),所以: 我的服务应该知道全局的EntityManager吗? 如果我的服务只知道使用的存储库(比方说,UserRepository和ArticleRepository) 从这两个问题,另一个问题,我的服务应该明确地persist()和flush()我的实体?

我如何在Doctrine 2 DQL中使用now()?

$ php app / console doctrine:query:dql'SELECT now()' [Doctrine \ ORM \ Query \ QueryException] [语法错误]第0行,第7列:错误:预期的已知函数,得到'现在' 我如何设法使用Doctrine DQL的MySQL now()函数?

如何限制在教义2中的结果集大小?

如果我正在使用respository类的findBy方法,我怎样才能限制结果集的大小?

在Doctrine 2中指定小数字段types时,规模和精度是什么意思?

我创build了一个十进制字段,以在Doctrine2中为我的Symfony2应用程序保存财务数据。 目前看起来像这样: /** * @ORM\Column(type="decimal") */ protected $rate; 当我input一个值,并且所述值被持久化到数据库时,它被舍入到一个整数。 我猜我需要设置字段的精度和缩放types,但是我需要某个人来解释他们到底做了什么? Doctrine2文档说: 精度:十进制(精确数字)列的精度(仅适用于小数列) scale:小数(精确数字)列的比例(仅适用于小数列) 但是这并没有告诉我很多。 我猜精度是四舍五入的小数位数,所以我认为应该是2,但是什么是规模? 规模是有意义的数字? 我的领域宣言应该是这个吗? : – /** * @ORM\Column(type="decimal", precision=2, scale=4) */ protected $rate;

内存泄漏Symfony2 Doctrine2 /超出内存限制

实际上我对symfony2和doctrine2的组合有很多麻烦。 我必须处理大量的数据集(大约2-3百万次的写入和读取),并且需要做很多额外的工作以避免内存不足。 我想出了两个要点,即“泄漏”内存(他们实际上不是真正的泄漏,而是分配很多) Entitymanager实体存储(我不知道这个真实的名字),它似乎像保持所有处理entites,你必须清除这个存储regulary $ entityManager->明确的() Doctrine QueryCache – 它caching所有使用的查询,我发现唯一的configuration是你能够决定你想要使用什么types的caching。 我没有find一个全局禁用既不是一个有用的标志为每个查询来禁用它。 所以通常使用函数禁用每个查询对象 $ qb = $ repository-> createQueryBuilder($ a); $ query = $ qb-> getQuery(); $查询 – > useQueryCache(假); $查询 – >执行(); 所以..这就是我现在想通了..我的问题是: 有没有简单的方法来拒绝Entitymanagerstorage的一些对象? 有没有办法在entitymanager中设置querycache的使用? 我可以在symonfony教义configuration中configuration这个caching行为吗? 如果有人对我有一些不错的提示,会很酷。否则,这可能会帮助一些菜鸟。 CYA

EntityManagerclosures

[Doctrine\ORM\ORMException] The EntityManager is closed. 插入数据后,我得到一个DBALexception后,EntityManagerclosures,我无法重新连接。 我试过这样但是没有得到连接。 $this->em->close(); $this->set('doctrine.orm.entity_manager', null); $this->set('doctrine.orm.default_entity_manager', null); $this->get('doctrine')->resetEntityManager(); $this->em = $this->get('doctrine')->getEntityManager(); 任何人有一个想法如何重新连接?

Doctrine 2 ArrayCollection过滤方法

我可以在使用延迟加载的时候过滤掉在Doctrine 2中的arrayCollection的结果吗? 例如, // users = ArrayCollection with User entities containing an "active" property $customer->users->filter('active' => TRUE)->first() 目前还不清楚过滤方法是如何使用的。

学说Symfony应用程序中的实体和业务逻辑

任何想法/反馈都欢迎:) 我碰到了一个问题,就是如何在Symfony2应用程序中 处理我的Doctrine2实体的 业务逻辑 。 (对不起,发文长度) 阅读了很多博客,食谱和其他资源后,我发现: 实体可能仅用于数据映射持久性(“贫血模型”), 控制者必须是更加苗条的可能性, 域模型必须从持久层(实体不知道实体pipe理器) 好吧,我完全同意它,但是: 在域模型中处理复杂商业规则的地方和方式? 一个简单的例子 我们的域名模式: 一个组可以使用angular色 angular色可以由不同的组使用 一个用户可以属于多个angular色 组 , 在SQL持久层中,我们可以将这些关系build模为: 我们的具体业务规则: 只有angular色连接到组时, 用户才可以在组中具有angular色 。 如果我们从组G1分离angular色R1 ,则必须删除具有组G1和angular色R1的所有UserRoleAffectation 这是一个非常简单的例子,但我想知道pipe理这些业务规则的最好方法。 find解决scheme 1-在服务层的实现 使用特定的Service类作为: class GroupRoleAffectionService { function linkRoleToGroup ($role, $group) { //… } function unlinkRoleToGroup ($role, $group) { //business logic to find all invalid UserRoleAffectation with these role […]