首页 > 解决方案 > findAll 没有为 ManyToMany 提供任何输出

问题描述

我最近开始使用Symfony,但我不明白为什么statuses(ManyToMany) 没有在findAll查询中提供任何输出。我需要在数据库中输入的最后/当前值。

App\Entity\Service {#752 ▼
  -id: 5
  -name: "Helpdesk"
  -description: null
  -url: null
  -serviceGroup: App\Entity\ServiceGroup {#728 ▼
    -id: 2
    -name: "Webserver 2"
    -description: null
    -services: Doctrine\ORM\PersistentCollection {#729 ▶}
    -order_id: 2
  }
  -order_id: 3
  -statuses: Doctrine\ORM\PersistentCollection {#753 ▼
    -snapshot: []
    -owner: App\Entity\Service {#752}
    -association: array:16 [ …16]
    -em: Doctrine\ORM\EntityManager {#383 …11}
    -backRefFieldName: "services"
    -typeClass: Doctrine\ORM\Mapping\ClassMetadata {#675 …}
    -isDirty: false
    #collection: Doctrine\Common\Collections\ArrayCollection {#754 ▶}
    #initialized: false
  }
}

//为easyadmin编辑我已经在Entity/Service.php中添加了一个函数,我不能只将它用于twig tempalte吗?

public function getLastStatus()
{
    return $this->getStatuses()->last();
}

标签: symfony

解决方案


您应该尝试在@ORM\ManyToMany() 内的属性“statuses”中修改您的类服务,方法是添加:fetch="EAGER"(它应该提供所有对象,而不仅仅是代理)。

或者,您还可以在 ServiceRepository 中创建一个函数 findStatuses(Service $service) ,使用查询生成器获取所有状态。您将在您的 ServiceRepository 中找到它的示例。


推荐阅读