【问题标题】:Is the symfony2 entity field a good solution for many related objects?symfony2 实体字段对于许多相关对象来说是一个很好的解决方案吗?
【发布时间】:2015-05-24 13:16:15
【问题描述】:

为关系使用 symphony 实体表单类型是否是一个不错的解决方案(例如标签 - manytomany)。

我想到了一大堆标签——对象!加载数据库的所有标签以进行选择 - 列表的开销不是很大吗?

如果这是真的,我该如何更好地解决这个问题?

问候迈克尔!

【问题讨论】:

    标签: forms symfony tags entity


    【解决方案1】:

    您不应该关心这种状态下的微优化。但当然,你应该知道教义。如果您有一个具有一对多或多对多关系的实体并且您知道,那么您需要它的关系,例如您的标签作为 getTags,稍后在您的应用程序中,您应该在查询构建器中进行连接。否则,关系在第一次调用getTags时被延迟加载

    【讨论】:

      【解决方案2】:

      tags - manytomany 是一个正常的解决方案,但是对于一个选择列表(如果有一个大集合)加载数据库的所有标签当然是开销,你不需要一次加载所有标签,使用一些jquery插件来处理它(可能是基于ajax的Select2插件......)

      【讨论】:

      • 好的。那是我首先尝试的。但是不可能将选项设置为 null 或空数组。在这种情况下,所有标签都将重新加载。
      • @Slowwie 您甚至不需要创建选择列表,您可以创建一个将 id 转换为对象的文本字段(使用 DataTransformer)并使用 jquery 插件添加自动完成功能,bootstrap-ajax-typeahead 可以不错的选择..
      • 是的,我知道。我之前一直在尝试这个。但它有自己的缺点。例如,您在 reverseTransform 函数中没有可用的 id。然后我必须对每个字符串进行原则调用,检查数据库中是否存在并保留新标签等等。当我有一个像 symfony2 的“实体类型”这样简单易用的表单类型时,我认为这不是一个干净而好的解决方案。是否有一个选项可以禁用实体类型中选项的加载,然后使用 Ajax 在模板中加载它?
      • @Slowwie 这不是 FormComponent 的工作,您应该通过自己扩展现有的类型来创建这样的类型。
      • 好的。这听起来不错。你能举个例子或有用的链接吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多