问题标签 [doctrine-orm]
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.
php - Doctrine2:使用参考表中的额外列处理多对多的最佳方法
我想知道在 Doctrine2 中处理多对多关系的最好、最干净和最简单的方法是什么。
假设我们有一张像Metallica的Master of Puppets这样的专辑,里面有几首曲目。但请注意,一首曲目可能会出现在一张专辑中,就像Metallica 的Battery一样 - 三张专辑都包含这首曲目。
所以我需要的是专辑和曲目之间的多对多关系,使用带有一些附加列的第三个表(如指定专辑中曲目的位置)。实际上,正如 Doctrine 的文档所建议的那样,我必须使用双重一对多关系来实现该功能。
样本数据:
现在我可以显示与它们相关的专辑和曲目列表:
结果是我所期待的,即:一张专辑列表,其中的曲目按适当的顺序排列,推广的专辑被标记为推广。
那么有什么问题呢?
此代码演示了问题所在:
Album::getTracklist()
返回一个对象数组AlbumTrackReference
而不是Track
对象。我无法创建代理方法,如果两者兼而有之怎么办,Album
并且Track
会有getTitle()
方法?我可以在方法中做一些额外的处理,Album::getTracklist()
但最简单的方法是什么?我是被迫写这样的东西吗?
编辑
@beberlei 建议使用代理方法:
这将是一个好主意,但我正在使用双方的“参考对象”:$album->getTracklist()[12]->getTitle()
和$track->getAlbums()[1]->getTitle()
,所以getTitle()
方法应该根据调用的上下文返回不同的数据。
我将不得不做类似的事情:
这不是一个非常干净的方式。
php - Doctrine 2 - “Getting Started XML-Edition”的问题 - 生成数据库模式
以前从未接触过 Doctrine(1 或 2),我正在关注Doctrine 2 的本教程。
我正处于使用命令行生成数据库模式的地步。这是 cli-config.php 文件,根据教程:
但是,当我运行它时,我得到一个错误:
因为 cli-config.php 文件引用的那个类不存在。我也尝试过清空 cli-config.php 文件,这当然也不起作用 - 说“未定义帮助程序“em”。”
我使用的是 2.0.0BETA3 版本。我知道这是一个测试版,所以他们可能已经改变了一些文件,但我在任何地方都找不到那个类。
关于如何让它工作的任何想法?
php - require_once 缺少学说 zend 框架
我正在将教义与 Zend 框架集成。我遇到了 cli 抛出的错误。Zend_Application_Bootstrap_Bootstrap 似乎没有 Zend_Application_Bootstrap_BootstrapAbstract 的 require_once。有人打过这个吗?
我的 cli-config.php
php - Zend 和静态类属性
我试图在定义静态类属性时为其赋值:
当我尝试执行此代码时,我收到此错误:
如果我只是为其分配一个简单的字符串值:
一切都很好。我在做 PHP 无法处理的事情吗?如果是这样,如何解决这个问题?
zend-framework - 学说2 Zend框架命名空间控制器
我正在尝试将教义2 沙箱与默认的 Zend 框架应用程序集成。当我尝试在控制器中使用命名空间时,出现“无效的控制器类(“IndexController”)”错误
这有效:
这不会(但应该?):
php - Doctrine 2 迁移如何使用 sqlite db 更改表?
我在更改学说 2 迁移中的表时遇到了一些问题。以下代码总是抛出错误:Operation 'Doctrine\DBAL\Platforms\AbstractPlatform::getAlterTableSQL' is not supported by platform。
这很奇怪,因为 sqlite 支持 alter table。
php - How to drop a foreign key in doctrine 2 migrations
I want to drop a foreign key in a doctrine 2 migration. But there is no dropForeignKeyConstraint()
Does anybody know how to drop it?
php - 如何处理 Doctrine 2 验证的异常
我是 Doctrine 2 的新手(实际上是 PHP 中的例外),但我正在尝试在 Doctrine 2 上(在 CodeIgniter 之上)提出一个强大的验证引擎,遵循此页面。
现在我想知道我将在哪里定义 ValidateException 类,以及如何“尝试”对我的实体(来自控制器、库等)进行保存(持久化?)。
在这样做之后(例如,在“身份验证”库中),我想要一些东西:
我可以简单地返回该持久性是成功的(即,通过验证并保存),还是不成功(即,验证失败)。
php - Doctrine 2 Classloader 奇怪的行为 - 错误的类路径
我在将 Classloader 添加到 Doctrine 2 项目时遇到了一些问题。我有这样的简单目录结构:
- 配置(引导文件)
- html(带有模板/图像/js等的docroot)
- php
- 实体(学说 2 实体)
- 响应(一些传输对象)
- 服务(处理 api 和业务逻辑 - 像 java 中的会话 bean)
每个 php 子目录都属于自己的命名空间(与目录名称相同)。
我想使用前面提到的类加载器来加载这三个不同的包,所以我的引导程序看起来像这样:
粗体 DIR 实际上是__ DIR __
php 常量。
现在,我在我的服务包中指的是实体,这就是问题开始的地方,由于某种原因,由于找不到文件问题,我得到了错误,例如:
无法打开所需的“/var/www/projects/PlatformManagement/config/../php/Services/Entities/User.php”(include_path='.:/usr/share/pear:/usr/share/php') /usr/share/pear/Doctrine/Common/ClassLoader.php 在第148行
不知何故,路径中有额外的“服务”,显然它不是有效的路径。我有点纳闷,为什么会有那个额外的目录?我三次检查了所有命名空间、调用,它们都正常。
我需要另一双眼睛才能看到,我假设我在这里遗漏了一些明显的东西,但无法发现它:|
哦,如果有帮助的话,这是 Fedora 上最新的 Doctrine 2 Beta (4) 和 php 5.3.3。
谢谢,格雷格
php - 学说2删除ManyToMany关系
我有一个具有以下类成员和映射的组实体:
添加一个孩子很简单:
删除一个孩子:
我将如何删除一个孩子?