この機能を要約するのは簡単ではありません。PHP 関連の情報をたくさん読んでも、ZF と ORM の実装があまりにも明確に説明されていないように感じます。
仕方なくrailsのacts_as_taggable_onを参考にしました。端的に言えば、コアはsql
だけです。
post.*,count(tag.id) を count
として選択します
投稿、タグ、タグ付けから
ここで、post.id!={現在の投稿.id} #自分自身を除外
および post.id=taging.post_id #タグの範囲を現在の投稿が所有するタグのセットに制限します
and taging.tag_type=post.base_class #タグ タイプを現在の投稿の基本タイプに制限します
and taging.tag_id=tag.id #制限は有効なタグである必要があります
and tag.name in ({現在の投稿が所有するタグ})
post.id でグループ化
カウント記述による順序
チュートリアルの途中で消えてしまう人がいるのを軽蔑します...
単純なことは複雑です
?