これは本当に私を悩ませているものですが、最初にコード、次に質問です:
<?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などのようになります...これらのタグを対応するタグ ID に変換し、結果をフィルターして、それらを含むものだけにしたいと考えています。パラメータの意味:
master_has_tag は、ID のみを格納する n:m テーブルです。
$criteria->addOr(MasterHasTagPeer::TAG_ID, $tag->getPrimaryKey());
これは、少なくとも1つのフィルターを含むすべてのエントリを提供しているため、探しているものではないことを知っています