问题标签 [doctrine-phpcr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2311 浏览

symfony - Symfony 下的 Doctrine PHPCR-ODM 未检测到映射的文档类

我正在尝试将 PHPCR-ODM 与现有的 Symfony 项目集成,并且无法让它(大概)检测我映射的 Document 类。具体来说,当我尝试持久化我的 MyDocument 类的 Document 时,会出现这样的错误:

我的类位于一个可能很奇怪的命名空间中,因为该项目也使用 Doctrine ORM,到目前为止,我刚刚为映射文档添加了一个新空间,但我无法想象命名空间名称的选择会影响功能。

根据文档,我已添加到我的 app/autoload.php:

我的 app/config/config.yml 包括以下内容(参数在 parameters.yml 中设置):

我的文档类位于 src/Example/Common/ORM/Document/MyDocument.php 中,如下所示:

最后,我用来测试集成的代码位于一个简单的控制台命令中,如下所示:

我已经验证我的 MyDocument 类已正确加载,但似乎没有以使 DocumentManager 意识到它是映射的 Document 类的方式处理注释。

我的猜测是我忽略了一些简单的配置步骤,但是通过反复彻底地查看 PHPCR、PHPPCR-ODM 甚至 Symfony CMF 的文档,我似乎找不到任何东西。那里的大多数示例都涉及通过 Symfony CMF 使用 PHPCR,我无法找到许多(任何?)PHPPCR-ODM 被集成到常规 Symfony 项目中的真实示例。


编辑:最终解决方案

我遵循了@WouterJ 在下面给出的建议,它解决了我的问题,我进一步遵循了他的建议,将编译器传递添加到我的 Symfony 包中,以使其使用非标准命名空间(即,除YourBundle\Document. 就我而言,这将进入一个库,该库将在其他地方而不是捆绑包中重复使用,因此它是合适的。

为此,我在src/Example/Bundle/ExampleBundle/ExampleBundle.php文件中添加了一个方法,如下所示:

该代码允许将任何映射的文档类放置在 Example\Common\ODM\Document 命名空间中,并且它将拾取它们。此示例使用注释,但相同的模式可用于 XML 或 YAML 映射(请参阅Doctrine\Bundle\PHPCRBundle\DependencyInjection\Compiler\DoctrinePhpcrMappingsPass方法签名的类)。

我发现我还需要定义doctrine_phpcr.odm.metadata.annotation_reader服务以使其工作,我在app/config.yml

可能有更好的方法来做到这一点,但这足以让它对我有用。

0 投票
1 回答
399 浏览

php - Symfony CMF 数据库模式

我已经开始研究 Symfony CMF,我必须说它看起来不错!但是,我无法理解数据库架构!我已经阅读了 PHPCR 的基础知识,并在一定程度上理解了它。让我感到困惑的是 Symfony CMF 安装的所有额外表。IE

  • phpcr_binarydata
  • phpcr_internal_index_types
  • phpcr_namespaces
  • phpcr_nodes
  • phpcr_nodes_references
  • phpcr_nodes_weakreferences
  • phpcr_type_childs
  • phpcr_type_nodes
  • phpcr_type_props
  • phpcr_workspaces

这些都是干什么用的?我能理解的唯一表是 phpcr_nodes 和存储的 XML / 属性数据!有些表有数据并且正在被查询 - 但我在 phpcr_nodes 中看不到对它们的任何引用!

例如:

表“phpcr_type_nodes”有数据如

名称:phpcr:托管超类型:nt:base

表“phpcr_type_props”有数据如

名称:版权

0 投票
1 回答
464 浏览

php - CreateBundle Symfony CMF

我正在尝试使用创建包 symfony cmf。到目前为止一切正常,因为我能够编辑块但我无法保存我的内容。我收到以下错误:

我正在使用的前端代码如下:

我不确定的是“关于”属性的用途。“about=cms/test”只是我输入的一些任意值。我猜它代表了一些 phpcr-odm 节点,但我什至不确定在哪里设置该节点,甚至不确定这些文档是如何工作的。我已经为我的项目创建了我的 phpcr-odm 数据库并且 phpcr-odm 正在工作,但我不确定所有这些东西是如何工作的。我对 symfony cmf 真的很陌生。请让我知道如何使用 create bundle 保存内容,因为文档很烂。我还阅读了有意义的 phpcr-odm 学说文档,但我不确定如何将它与这个问题联系起来。

谢谢。

0 投票
0 回答
932 浏览

php - Symfony2 和 Doctrine PHPCR:分段错误

目前我的 Symfony2 应用程序有问题,使用 Doctrine PHPCR 包。在尝试显示 Sonata 管理员帖子列表时,我们遇到了分段错误:

[Thu Aug 01 12:33:11 2013] [notice] child pid 4239 exit signal Segmentation fault (11)

由于我们收到了很多帖子,我们将它们分片以获得正确的性能。这样,我们的帖子路径类似于:“/blog/economics/2014/02/10/my-awesome-post”。我们的节点及其对应的类是:

我的管理员列表如下所示:

现在,两个相关的文档方法:

摸索了一会儿,我注意到这两种方法中的一种出现了分段错误。不确定具体在哪里。如果我在 中返回一个硬写的字符串getParentTitle,则一切正常。然而,一旦我调用getSectionParent,就会发生分段错误。

我尝试用 调试它gdb,这是我找到的最精确的堆栈:

不确定所有这些数据是否足够(我是段错误调试的新手)。

我试图用谷歌搜索这条消息,但我没有找到任何结论。然而,通过zend.enable_gc = 0工程禁用垃圾收集器。但是,出于内存消耗微不足道的原因,我不会在生产中传递它。

任何想法?

编辑

从头开始重新安装我的机器后,我仍然遇到了问题。然而,从默认的 Debian PHP 版本 (5.4.4) 到 DotDeb 版本 (5.4.25) 解决了这个问题。但是,在同一个地方出现了另一个段错误:

我还需要一些帮助。:)

0 投票
1 回答
268 浏览

symfony-cmf - SymfonyCMF RoutingBundle Doctrine PHPCR 配置错误

我正在按照教程创建基本 CMS但在配置 CMF RoutingBundle 后,如启用动态路由器中所示,当我尝试加载夹具数据时出现以下错误

这是我的 config.yml

0 投票
2 回答
155 浏览

symfony - Symfony-cmf 路由一步一步

symfony-cmf 文档是一场噩梦,真的很难理解,而且似乎很多已经过时了。

我想我已经理解了路由的概念,但我不知道如何清楚地实现它。

  1. 如何注册路由器?
  2. 如何设置动态路由?
  3. 如何持久化文档并映射路线?
0 投票
2 回答
467 浏览

doctrine-odm - 如何使用 querybuilder 进行多次连接?

我正在为一个项目使用 Doctrine PHPCR。我在许多类之间有关系:

有了这种关系,我如何进行多重连接:

如果我使用 $queryBuilder->addJoinInner 两次给我错误:在 NotImplementException 中加入 Joins。我需要具有给定 c 实例的数据库中的所有 b 数据

0 投票
1 回答
169 浏览

symfony - 如何从 Symfony 简单的 cms 包中扩展 Page 类?

我正在尝试从 symfony 简单的 cms 包中扩展默认的 Page 类。

问题:
自定义属性没有保留。

下面是从 BasePage 扩展的类的代码。

0 投票
1 回答
752 浏览

php - 使用 Doctrine ORM、Doctrine PHPCR-ODM 和事件监听器的循环依赖

我正在研究一个复杂的 Symfony 项目,该项目将 Doctrine ORM 对象与 Doctrine PHPCR-ODM 文档混合在一起。一切正常,但我一直无法解决容器中侦听器之间的循环依赖注入问题。

场景是,我有多个 ODM 文档,它们在加载时设置 ORM 引用,这是通过事件侦听器完成的。一个示例配置是:

services.yml

Example\Common\EventListener\MyDocumentEventListener.php

MyDocument在处理对象时,上面的所有内容都可以正常工作。(这基本上是 Doctrine 文档中描述的用于混合 ORM 和 MongoDB ODM 的精确实现)。

现在的问题是,当我还想在同一个应用程序中做相反的事情时——也就是说,我还想要一个 ORM 实体,它有一个侦听器,它填写一个或多个 ODM 文档的引用。

在不添加更多代码的情况下,假设我将services.yml配置扩展为:

现在这将失败,因为我们有一个循环依赖:容器尝试将 ODM 侦听器注入到DocumentManager的侦听器中,而后者EntityManager又尝试注入DocumentManager, 等等。(注意这个例子使用的是Registry而不是管理器,但是结果是一样的)。

我尝试了几种不同的方法来解决这个问题,但还没有找到一种可行的方法。有没有人能够让 ORM 和 ODM 之间的双向监听器在单个项目中像这样工作?

不幸的是,我在这方面发现了一些例子。到目前为止,我的解决方法是创建一个服务来处理这些对象的加载/持久化,然后通过该服务运行所有内容,但与使用优雅的事件驱动系统相比,这似乎非常糟糕。

0 投票
1 回答
421 浏览

sonata-admin - 用于编辑多值的标准表单类型?(Symfony CMF PHPCR)

我使用 Sonata Admin 作为后端。我在 PHPCR Document 字段中是多值的(即在 PHP 中是一个字符串数组)。现在我想在 Sonata admin 中添加/删除元素。我应该使用哪种类型?尝试收集,但我在管理中一无所获;当我尝试 sonata_type_collection 时,管理员期望我提供管理员代码(我猜是另一个管理员),但事实并非如此。

我应该为文档字段使用哪种表单类型,如下所示?