自定义 pager/formfilter/buildquery 不会将过滤器数据处理为查询

Posted

技术标签:

【中文标题】自定义 pager/formfilter/buildquery 不会将过滤器数据处理为查询【英文标题】:custom pager/ formfilter/ buildquery doesn't process filter data into query 【发布时间】:2011-05-25 01:45:33 【问题描述】:

我有一个需要使用表单过滤器、寻呼机和特定表格方法的操作:

$this->filterForm = new OrganisationFormFilter();
$this->filterForm->setTableMethod('retrieveMemberOrganisations');
$this->filterForm->bind($searchParams);
$v = $this->filterForm->getValues();
$q = $this->filterForm->buildQuery($v);

$this->pager = new sfDoctrinePager('Organisation', 50);
$this->pager->setQuery($q->orderBy(implode(' ',$this->getSort())));
$this->pager->setPage($request->getParameter('page',1));
$this->pager->init();

public function retrieveMemberOrganisations(Doctrine_Query $q)

    $rootAlias = $q->getRootAlias();
    $q->
    select("$rootAlias.*")->
    addSelect('m.id, sc.id, cat.id, cat.number_key')->
    innerJoin ("$rootAlias.CurrentMember c")->
    innerJoin ("$rootAlias.Membership m")->
    innerJoin ('m.LatestMembership lm')->
    innerJoin ('m.MembershipSubcategory sc')->
    innerJoin ('sc.MembershipCategory cat');

    return $q;


问题是过滤器设置根本没有处理。我检查了 $v 中的值是否已设置,但它们似乎没有反映在 $q 中。此外,当我在进入retrieveMemberOrganisations 时使用调试器停止时,$q 也不会限制过滤器设置。这是我使用的正确代码顺序吗?

【问题讨论】:

【参考方案1】:

我实际上是在使用 formFilter 来做类似的事情。而不是使用

$q = $this->filterForm->buildQuery($v);

使用

$q = $this->filterForm->getQuery();

我没有使用 setTableMethod 方法,但认为应该可以。

【讨论】:

以上是关于自定义 pager/formfilter/buildquery 不会将过滤器数据处理为查询的主要内容,如果未能解决你的问题,请参考以下文章

自定义UI 自定义布局

自定义UI 自定义布局

自定义UI 自定义布局

自定义 view - 自定义属性

Springboot+自定义注解+自定义AOP前置增强+自定义异常+自定义异常捕获

Android 自定义View