这确实让我感到困扰,但首先是代码,然后是问题:
<?php
public static function retrievePagerByTagArray($page, $limit, $tags) {
$criteria = new Criteria();
$criteria->addJoin(self::MASTER_ID, MasterPeer::MASTER_ID);
foreach($tags as $tag) {
$criteria->addOr(MasterHasTagPeer::TAG_ID, $tag->getPrimaryKey());
}
$criteria->add(self::IS_ACTIVE, 1);
$criteria->addDescendingOrderByColumn(self::MASTER_ID);
$pager = new sfPropelPager('Master');
$pager->setCriteria($criteria);
$pager->setPage($page);
$pager->setMaxPerPage($limit);
$pager->init();
return $pager;
}
我想做的是:
我的标签是用 get 参数制作的,所以标签就像http://example.com?filter=tag1%7tag2等...我将这些标签转换为它们相应的 tagid 并希望将我的结果过滤为只有那些也有这些的东西参数含义:
master_has_tag 是一个仅存储 id 的 n:m 表。
我知道这$criteria->addOr(MasterHasTagPeer::TAG_ID, $tag->getPrimaryKey());
不是我要找的,因为这给了我所有包含至少一个过滤器的条目