0

私は現在、記事に関するユーザーの意見 (1 または 0) のテーブルをセットアップしています。

CREATE TABLE IF NOT EXISTS `opinion_article` 
(
`id`                INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`uid`               INT UNSIGNED NOT NULL, /* user with an opinion on the article */
`aid`               INT UNSIGNED NOT NULL, /* article ID */
`opinion`           BOOL NOT NULL, /* opinion on the article, 1 = good, 0 = bad */
FOREIGN KEY (`uid`) REFERENCES `user`(`id`) ON UPDATE CASCADE ON DELETE RESTRICT,
FOREIGN KEY (`aid`) REFERENCES `article`(`id`) ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE (`uid`, `aid`)
) ENGINE=InnoDB;

ユーザーの「記事スコア」を取得したいと考えています。これは、記事に良いと投票した他のユーザーの数です。トリックは、ユーザーが多くの記事を持つことができるということです。ユーザーのすべての記事に関するすべての意見を返さずにこれを行う方法はありますか? for ループを使用して意見==1 をチェックしますか?

4

2 に答える 2

1

Article モデルに、次のリレーションを追加します。

'score'=>array(self::STAT, 'OpinionArticle', 'aid', 'condition'=>'opinion=1')

その後$Article->score、その番号が返されます。

于 2012-12-29T03:35:05.867 に答える