首页 > 解决方案 > 如何从 Doctrine toMany 关联中过滤掉字段?

问题描述

如果不需要,我需要防止选择某些非常昂贵的字段。

我在数据库中有一个多边形字段,我只想在需要时选择它。对于集合 仅当直接选择此字段时,才不应加载或什至显示在结果SELECT * FROM部分中。这是我一直在寻找的东西。将收集数据减少到字段的子集以提高 sql 性能。

例如,如果数据库是远程的,我不想将尽可能少的信息从 sql 服务器传输到 php 服务器。

在几何数据的情况下,这些单独的字段最终可能会很大。

我知道我可以在事后过滤集合。我已经在使用带有 FilterInterface 的 Apigility。这有助于最大限度地减少从 php 服务器传输到客户端的数据,而不是从 mysql 服务器传输到 php 服务器的数据。

/**
 * @ORM\OneToMany(targetEntity="ContactSearchprofile", mappedBy="contact", cascade={"all"}, orphanRemoval=false)
 */
private $searchprofiles;
public function getSearchprofiles() {return $this->searchprofiles;} // will select everything

在内部它应该只做 arepo->select("The, Fields, I, Want")->where('id = :contact_id');而不是 a select("*")

标签: phpmysqldoctrine-ormdoctrine

解决方案


推荐阅读