我有一个需要使用表单过滤器、寻呼机和特定表格方法的操作:
$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 中。此外,当我在入口处使用调试器停止检索成员组织时,$q 也不会限制过滤器设置。这是我使用的正确代码顺序吗?