【发布时间】:2021-06-09 10:06:19
【问题描述】:
我已经开始在我工作的新公司开展一个项目,我的部分工作定义是维护现有网站,但我在使用技术方面的经验有限,我什至可以说它是微不足道的。我现在面临的问题是一个看似简单的问题,但到目前为止我无法解决它。
我们的系统包含用户和用户许可证以及其他内容,每当我们尝试编辑用户许可证时,我们都会面临一个特定问题,随着用户数量的增加,我们的进程会在算术上减慢。
每当我们在单个用户的许可证页面上单击编辑操作时,它不会仅列出仅包含有关所选用户和许可证的信息的基本编辑表单,而是会查询所有用户并创建一个包含所有当我们尝试仅编辑 1 个人的许可证时,我们拥有的用户。这是我们的编辑页面在下面的样子:
此用户列表基本上由我们数据库中的每个用户组成,因此它会导致我们在单击编辑操作后触发此类查询。
我正在与本地数量有限的用户合作,至少能够工作,但随着数据的增加,它会变得更加引人注目。我现在将分享来自我们的 easy_admin.yml 文件的快速快照以显示当前结构。
Easy_admin.yml file related parts
并且只是我们访问用户的许可证实体的一部分。
用户实体本身相当大,因为我的第一个目标是在不更改实体的情况下找到解决方法,所以我现在不会在这里发布它,但如果没有这样的更改就无法解决,我也可以分享它也是。
我们的许可证列表页面也使用相同的结构,您可能会看到,但我们不会在同一页面中遇到压倒性缓慢的原因是我们在列出许可证时使用了 easyadmin 的分页功能和我们为此目的使用“max_result:X”,我想也许我也可以在我们的编辑页面上将其限制为只有一个用户,但是当我尝试时,我遇到了在这里详细解释的问题:
“You cannot define a mapping item when in a sequence” when running phpunit in symfony
我想知道的是,easy_admin.yml 中是否有一种方法可以帮助我解决该问题,而无需对实体本身进行很多更改,我基本上是在尝试创建一个编辑页面,例如显示页面仅包含正在编辑的用户信息,或者基本上是一种创建整体更好的查询以一劳永逸地解决问题的方法。可视化我的意思的示例页面:
License show page for and individual
或者喜欢我们这里的用户编辑页面:
提前感谢所有答案和帮助尝试。
【问题讨论】:
-
您能提供用于显示此页面的操作和表单吗?如果有的话,还有相关的树枝吗?
-
@FlorentCardot 您好 Florent,感谢您的回答。我们正在使用 easyadmin 为所有 1.x 版本提供的内置“编辑”操作:symfony.com/doc/1.x/bundles/EasyAdminBundle/book/…。现在我注意到我没有提到 symfony 和 easyadmin 版本。 Symfony:4.4.16,easyadmin:1.7.24
-
好的,基本上,您希望字段用户不可编辑或仅显示用户?避免所有这些查询?
-
@FlorentCardot 基本上,我想要的是当我单击单个许可证的编辑操作时,不要运行会带来所有用户的查询。这是我们当前的上面的编辑页面:link 我想要的基本上只是在我单击编辑许可证时看到拥有许可证的用户,而不是像上面截图中那样查询和提供所有用户的选项(当我点击用户下拉菜单,我可以查看所有用户)
标签: php symfony doctrine-orm symfony4 easyadmin