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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für jemand neugierig ist, das ist, wie ich es geschafft habe:
Post
BeziehungenPostTag
BeziehungenController
Dies ist nun zusammen mit meiner ListView zeigt nur Beiträge, bei denen ALLE angegebenen tags.
Sollten Sie die Beziehung zwischen
Post
undPostTag
in IhremPost
Klasse. Legen Sie es aufrelations()
Danach auf dem controller-Klasse fügen Sie den folgenden code: