【问题标题】:SilverStripe 3 Filtering / Filtering Out DataObjects in a FunctionSilverStripe 3 过滤/过滤出函数中的数据对象
【发布时间】:2015-11-13 00:01:23
【问题描述】:

我找到了一些过滤示例,但还不够清楚,无法回答我的问题。我有以下功能来获取我的孙子页面。我正在尝试计算它们,但只有如果它们符合某些标准。在我的情况下,如果他们没有有 X、Y、Z,那么将它们包括在计数中。

换句话说,想要向函数添加一个参数列表/数组,如果 ANY 为真,则不要包含它们并将它们过滤掉。例如,如果DealerOnly = true 忽略。

我考虑在模板中执行此操作并使用 if / else 但计数不会像这样显示,所以我没有走那条路。

欢迎使用其他方法。

<% loop $GrandChildren %>$Count<% end_loop %>   

可能的帮助: http://www.silverstripe.org/community/forums/data-model-questions/show/23507

这里的文档:(虽然不是我需要的) https://docs.silverstripe.org/en/3.1/developer_guides/model/searchfilters/

我的函数返回我的孙子页面。

public function getGrandChildren() {
    $ids = Page::get()->filter(array('ParentID' => $this->ID))->getIDList();
    $grandChildren = Page::get()->filter(array(
        'ParentID' => $ids
    ));

    return $grandChildren;
}

在我计算所有页面的模板中

$GrandChildren.Count

【问题讨论】:

    标签: php function count filtering silverstripe


    【解决方案1】:

    好吧,您可以随意操作您的DataList,例如

    public function getGrandChildren() {
        $ids = Page::get()->filter(array('ParentID' => $this->ID))->getIDList();
        $grandChildren = Page::get()
            ->filter(array(
                'ParentID' => $ids
            ))
            ->exclude(array('DealerOnly' => true));
    
        return $grandChildren;
    }
    

    请参阅DataList::excludedocs 的 API 文档

    如果您想排除数据库中是否有更多列为真,则必须使用:not searchfilter 修饰符,因为不幸的是没有excludeAny() 函数。

    ->filter(array('DealerOnly:not' => true))
    ->filter(array('Foo:not' => 'Bar'))
    

    【讨论】:

    • 它似乎没有任何效果..没有错误或任何东西。它只是不排除任何东西......我也尝试过使用“标题”来排除所有东西。
    【解决方案2】:

    由于某种原因,我没有得到其他答案。我发现你可以在模板中过滤。

    $GrandChildren.Filter('DealerOnly','0').Count
    

    【讨论】:

      【解决方案3】:

      你可以使用->exclude,所以为你DataList...

      $grandChildren->exclude(array(
        'DealerOnly' => true
      ));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-08
        相关资源
        最近更新 更多