问题标签 [doctrine-collection]

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 投票
5 回答
3217 浏览

php - 如何返回一个空的 Doctrine_Collection?

我有一个返回 Doctrine_Collection 的方法,带有一个whereIn()子句:

但是,当$values是一个空数组时,此方法返回AnomalyTable 中的所有行。这不是意外的行为,如 Doctrine 文档中所述,并写在此处:Doctrine where in with Doctrine_Query

但是,当是一个空数组时,我想返回一个空Doctrine_Collection而不是我的查询结果。$values

关于我如何做到这一点的任何想法?

谢谢 =)

编辑:

添加一个不可能的子句,like->where('1=0')可以解决问题,但它是对数据库服务器的不必要请求。有人有更好的主意吗?

0 投票
1 回答
706 浏览

php - 两个 Doctrine_Collection 实例的差异

我有一组完成了某个测试的用户和一个收到该测试邀请的用户列表。现在我想获取所有完成测试的用户。我认为区分两个集合(如数组)很简单,但只有Doctrine_Collection::merge()可能。

我的数据模型(为清楚起见,省略了很多):

现在我可以使用这两个集合:

获得所有用户的最佳方法是什么?我可以执行 SQL 查询,但我不喜欢在 OOP php 或 DQL 查询中执行此操作。在 SQL 中,我可以这样做:

0 投票
1 回答
232 浏览

symfony1 - 重用 Doctrine_Record 对象来保存模型的多个实例

我正在开发 Symfony 应用程序中的某种通知模块。我正在迭代一个用户,为每个在其个人资料中具有活动标志Doctrine_Collection的用户创建一个:Notification

问题是一旦我保存了第一个通知,我就无法重用该对象在数据库中存储新记录。我尝试过$notification->setId()使用nulland '',但保存会更新对象而不是保存新对象。

有没有办法重用$notification对象?我想这样做是因为通知字段创建的逻辑有点复杂。

0 投票
2 回答
724 浏览

php - 如何关联一对多关系的对象?

我正在使用带有 Doctrine ORM 的 symfony 1.4。我有两个通过一对多关系关联的类,并且我有“一侧”的对象。我需要将这个对象,比如说 A,关联到“多面”对象,比如说 B。事情是 A 没有一种方法可以只将一个对象添加到它的 Doctrine_Collection 属性,而是它有一个接收一个 setter Doctrine_Collection。我怎样才能实现这种关联?

我有类似的东西:

拜托,任何帮助将不胜感激!!!谢谢!

编辑:

也许我没有很好地解释我。我的人际关系设置得当。我不想检索任何对象;相反,我正在尝试设置对象。问题是该方法A::setB()需要 aDoctrine_Collection作为参数,而不是对象本身。我不知道如何构建它Doctrine_Collection,这就是我在这里要问的......我只需要添加$b到.Doctrine_Collection$a

0 投票
1 回答
684 浏览

php - Doctrine_Collection __toString() 类型的功能

有人对基于特定列名将 Doctrine_Collection 转换为 CSV 的最佳方法有任何想法吗?

示例数组:

我想结束:

现在我可以通过以下方式轻松做到这一点:

但是,我想看看是否有使用 Doctrine_Collection 类提供的内置方法的更优雅的解决方案。

0 投票
1 回答
472 浏览

doctrine-1.2 - 无法保存 Doctrine_Collection

我正在使用带有 Zend 框架的 Docrine 1.2 并试图保存一个 Doctrine 集合。

我正在使用以下代码从我的表类中检索我的集合。

我也有以下类来重新排序上述事件记录。

上面的_saveCollection方法如下

上述保存方法中的事件 id 只是一个事件 id 的枚举数组,我使用数组的键来使用 order 字段设置事件的排序顺序。如果我将集合的 var_dump 到数组 ($this->_collection->toArray()) 我得到正确的数据。但是,当我尝试保存集合时,出现以下错误。

“SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 'order = '0' WHERE eventtypeid = '3 附近使用的正确语法''在第 1 行"

无论如何我可以让 Doctrine 扩展这个错误,完整的 SQL 语句将是一个开始,如果有人知道为什么会发生这个错误,那将非常有帮助。

提前谢谢了

加里

编辑

我已经修改了上面的代码以尝试一次处理一条记录,但我仍然遇到同样的问题。

0 投票
2 回答
5423 浏览

php - DoctrineCollection:toArray() 和 getData() 之间的区别

基本上,如果我有一个 DoctrineRecord 对象的 DoctrineCollection,并且想将其转换为数组,我可以使用:

$collection->toArray()或者$collection->getData()

但我不明白这两种方法有什么区别。

0 投票
2 回答
12460 浏览

php - 获取集合中的最后一个元素

我正在尝试获取集合中最后一个元素的属性。我试过了

没有工作

(告诉我我正在尝试getProperty()在布尔值上使用)。

知道为什么吗?

0 投票
1 回答
1369 浏览

collections - How to remove a collection element without EntityManager#remove(...) in Doctrine 2?

I have a classical construction like EntityA OneToMany EntityB. Implemented as a bidirectional relationship:

  • the EntityB has a property $entityA of type EntityA and
  • the EntityA has a property $entityBs, that contains an ArrayCollection of EntityB elements.

Now I want to remove some EntityB elements. It would work like this:

But I'd like to be able just to "say" $myEntityA->removeEntityB($entityB) and not need to care about anything else. An advantage would be, that I can implement a method EntityA#replaceEntityBs(ArrayCollection $entityBs), that simply removes all EntityA#$entityBs and replace them be the given elements.

Is it possible / How to remove elements of a collection directly from the inverse side of a relationship (of course without to pass the EntityManager into the entity)?

0 投票
1 回答
3155 浏览

doctrine - Doctrine ArrayCollection 匹配条件函数导致未定义属性:MyEntity::$1 (Symfony 3.4)

我将实体“TrainingProgressEntry”定义为@ORM\Entity 和“培训”属性,如下所示:

匹配的@ORM\Entity“Training”定义了一个属性“training_progress”,例如

和一个像这样的getter方法

最后,我定义了一个 getter 方法,旨在仅返回日期比某个参考日期更新的条目:

使用最后一个函数时,我得到以下“ContextErrorException”:

来自(哪里

当试图“返回 $object->$field”时。

跟踪显示它是由上述行中的函数“getTrainingProgressSinceStart()”引起的

由于某种原因,似乎无法识别匹配功能或某些东西......我现在真的不知道要寻找什么。任何提示都非常受欢迎。