私は3つのモデルを持っています:
Groups
id
name
Users
id
group_id
login
// ....
Messages
id
user_id
title
body
// ....
ユーザーはグループに属し、多くのメッセージを持っています
'group' => array(self::BELONGS_TO, 'Groups', 'group_id'),
'messages' => array(self::HAS_MANY, 'Messages', 'user_id')
グループには多くのユーザーがいます
'users' => array(self::HAS_MANY, 'Users', 'group_id')
メッセージはユーザーに属します
'user' => array(self::BELONGS_TO, 'Users', 'user_id')
Yii にはリレーションに属していない$through
ので、メッセージとグループを接続するリレーションを定義するにはどうすればよいですか (つまり、メッセージはグループに属します)?
UPD:汚いハック。新しいタイプのリレーションを定義:
class BelongsToThrough extends CBelongsToRelation {
public $through;
}
でリレーション タイプとして設定しMessages
ます。
'group' => array('BelongsToThrough', 'Groups', 'group_id', 'through' => 'user')
そしてそれは動作します。何とかして。誰かがそれがどのように機能しているのか説明してもらえますか?