我有一个使用名为software
的表的实体。在我正在开发的应用的用户界面中,software
中的所有条目对于列表中的用户或表单中的下拉列表都很有用。不幸的是,从software_dynamic
中选择时,数据库会自动继承另一个名为software
的表。
这使得UI在大约15,000个软件条目中,例如,在Symfony FormBuilder中使用实体时,它不需要这些条目。另一个例子是这样的:
$doctrine->getManager->getRepository('Software')->findAll();
返回用户不想看到的所有无关条目。
我需要做的是让Doctrine运行select * from only software
之类的查询。我试图通过FormBuilder中的query_builder
选项来做到这一点,但我只能找到一种方法来返回我想要的结果数组 - 不像FormBuilder所需的QueryBuilder实例。
我担心的是,我唯一的选择是手动查询软件,然后将其作为选项传递到表单中。这不是理想的,但它似乎开始似乎是唯一的选择..我只是希望有人知道如何告诉Doctrine实体不要从其他表继承,基本上使用SQL中的only
语句。
我无法通过学说来区分software
和software_dynamic
;它们是相同的表,但是一个是从CRUD手动填充的(用户想要查看的那个),另一个是通过API自动填充的(仅对后端有用)。
答案 0 :(得分:0)
您是否意外将获取模式设置为EAGER加载?这确实会导致你想要的相反效果。
然而,当您执行需要在某些情况下急切加载时:
$query = $em->createQuery("SELECT e FROM MyProject\Entity e");
$query->setFetchMode("MyProject\AssociatedEntity", "field", "EAGER");
$query->execute();