【问题标题】:Access to many-to-many relation in array format, symfony2访问数组格式的多对多关系,symfony2
【发布时间】:2014-10-10 14:19:15
【问题描述】:

在 symfony 中,我们可以使用返回 ArrayCollection 类型对象的 getter 函数访问多对多关系。 例如,为了获取 Alex 的学生,我们可以调用 $alex->getStudens(),然后我可以访问 ale 的 studens 对象。

现在我的问题是我如何访问数组中 alex 的学生 id,例如通过调用 $alex->getStudentsIds() 它返回 {1,5,7,12,..},这是他的学生的 id。

【问题讨论】:

  • 了解最终结果可能比为您提供QueryBuilder 或返回所有这些内容的自定义方法更有帮助。 Doctrine 在对象关系映射方面非常强大,您可能会尝试将IN 功能用于查询,而MEMBER OF 可能是更好的方法。

标签: php symfony doctrine-orm dql


【解决方案1】:

正是你写它的方式,你在实体中添加了另一个函数

public function getStudentsIds()
{
   $students = $this->students;
   $studentIds = [];

   foreach($students as $student)
   {
     $studentIds[] = $student->getId();
   }  

   return $studentIds;
}

理想的解决方案是将此类方法添加到存储库并让它仅查询给定对象的学生 ID,但这是可能的最简单的解决方案。

【讨论】:

  • 在建立关系时也可以使用 indexBy。在这种情况下,一个简单的 array_keys($students) 就可以解决问题。
  • 你能举一个你说效率更高的查询的例子吗?谢谢:)
  • $repository->createQueryBuilder('q')->select('IDENTITY(q.students)')->where('q = :yourObject')->setParameter('yourObject', $你的对象)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
  • 1970-01-01
相关资源
最近更新 更多