我有一个实体,它使用一个名为software
的表。在我正在开发的应用程序的UI中,software
中的所有条目对表单中的列表或下拉列表中的用户都很有用。不幸的是,当从software
中进行选择时,数据库会自动继承另一个名为software_dynamic
的表。
这使得UI有大约15000个软件条目,例如在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自动填充的(仅对后端有用)。
您是否意外地将获取模式设置为EAGER加载?这确实会造成与你所渴望的相反的效果。
但是,当执行时,在某些情况下需要紧急加载:
$query = $em->createQuery("SELECT e FROM MyProject'Entity e");
$query->setFetchMode("MyProject'AssociatedEntity", "field", "EAGER");
$query->execute();