0

formfilter、pager、および特定のテーブル メソッドを使用する必要があるアクションがあります。

$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 もフィルター設定を制約しません。これは私が使用しているコードの正しい順序ですか?

4

1 に答える 1

1

私は実際に formFilter を使用してそのようなことをしています。使用する代わりに

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

使用する

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

私はsetTableMethodメソッドを使用していませんが、うまくいくと思います。

于 2011-05-25T23:37:34.247 に答える