Suche in Yii mit Mehreren MANY_MANY Bedingungen

In das Yii-framework ein, ich versuche, herauszufinden, wie die Abfrage und wieder Ergebnisse, die mit mehreren tags in der folgenden system:

posts
id

tags
id

post_tags
post_id
tag_id

Ich versuche, herauszufinden, wie die Rückkehr ein Resultat der Beiträge, die mit tag 1 UND tag 2. Jede Hilfe bei diesem würde sehr geschätzt.


BEARBEITEN

So weit ich scheinen, um es arbeiten wie diese:

In Post Beziehungen:

array(
    'tags'  => array( self::MANY_MANY, 'Tag', Yii::app()->db->tablePrefix . 'post_tag(post_id,tag_id)' ),
);

In PostTag Beziehungen

array( 
    'post'  => array( self::BELONGS_TO, 'Post', 'post_id' ),
    'tag'   => array( self::BELONGS_TO, 'Tag', 'tag_id' ),
);

In meinem Controller

$tags   = array( 1, 2, 3 ); //Match N tags

$criteria           = new CDbCriteria();
$criteria->with = 'post';
$criteria->addInCondition( 'tag_id', $tags );
$criteria->group    = 'post_id';
$criteria->having   = 'COUNT(*) = ' . count( $tags );

$matchedPostTags    = PostTag::model()->findAll( $criteria );
foreach( $matchedPostTags as $matchedPostTag )
{
    $post   = $matchedPostTag->post;
    //Do what you want with it.
}

Nun, wenn jemand herausfinden können, wie man diese Arbeit mit CActiveDataProvider ich würde es zu schätzen wissen.

InformationsquelleAutor Matt | 2011-11-08
Schreibe einen Kommentar