Silverstripe。按ID挂起过滤CMS结果

时间:2017-07-17 03:50:01

标签: php filter silverstripe

我有一个使用Silverstripe CMS构建的网站。

我们经常需要按帐户ID搜索用户。所以我补充道:

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

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

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

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

1 个答案:

答案 0 :(得分:1)

首先,添加哈希(#)不是标准行为,所以肯定会发生奇怪的事情!默认情况下,应始终对ID字段建立索引,但检查数据库是否具有ID的主字段索引。 我假设您正在ModelAdmin实例中搜索?如果您可以显示一些可能有用的帐户代码。

如果SilverStripe没有自动创建ID字段及其索引,则某些内容已经出现故障。

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

请注意,如果您没有找到问题的原因,它可能会在以后回来咬你。

这两件事('#'和缺失索引)表明您的SilverStripe安装,配置或代码严重错误。祝你好运!