代码之家  ›  专栏  ›  技术社区  ›  Ryan Murphy

银色条纹。按ID挂起筛选CMS结果

  •  0
  • Ryan Murphy  · 技术社区  · 7 年前

    我们经常需要根据用户的帐户ID搜索用户。因此我补充道:

        private static $searchable_fields = array(
            'ID',
             ...
         );
    

    到帐户数据对象。当我们尝试按ID搜索时,需要首先输入哈希(#),然后输入帐户ID。这似乎是默认行为。

    当您开始输入帐户ID时,cpu挂起,需要很长时间才能响应,这使得它毫无意义,因为在响应所需的时间内,您可以通过其他方式找到帐户。它最终会回复并提供与搜索词匹配的正确帐户。我们的其他搜索字段都不是这样的。

    有没有更好的方法来实现这个过滤器?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Luke H    7 年前

    首先,添加散列(#)不是标准行为,因此肯定会发生一些奇怪的事情!默认情况下,应该始终为ID字段编制索引,但请检查您的数据库是否有ID的主字段索引。 我想你是在一个 ModelAdmin

    ID 字段及其索引。

    如果您使用的是非标准ID字段(不是自动 DataObject.ID $indexes 静态打开 DataObject 在数据库中创建索引。确保任何搜索字段都有索引总是一个好主意。 https://docs.silverstripe.org/en/3/developer_guides/model/indexes/

    这两件事(“#”和缺少索引)表明您的SilverStripe安装、配置或代码有严重问题。然而,祝你好运!