Итак. Есть соц сеть. Куча таблиц и зависимостей. Вот часть из них.
Пользователь может быть владельцем клуба (club.owner_id) и может состоять в клубАХ (users_clubs) - many_many
Каждый пользователь генерирует события. События привязаны только к пользователю. Необходимо сделать вывод в gridview список событий в клубе. То есть выводить события всех пользователей относящихся к конкретному клубу.
Набросал вот такой sql
SELECT
e.id, e. c.club_id, u.name
FROM
events AS e
JOIN user AS u
ON e.owner_id = u.id
JOIN users_clubs AS uc
ON uc.user_id = u.id
JOIN clubs AS c
ON c.id = uc.club_id
WHERE
c.id = :club_id
Имеются модели:
Userpublic function getClubs(){
return $this->hasMany(Club::className(), ['id'=>'club_id'])
->viaTable('users_clubs', ['user_id'=>'id']);
}
Eventpublic function getOwner(){
return $this->hasOne(User::className(), ['id'=>'owner_id']);
}
Clubpublic function getMembers($count = 100){
return $this->hasMany(User::className(), ['id'=>'user_id'])
->limit($count)
->viaTable('users_clubs', ['club_id'=>'id'], function($query){
$query->where(['status'=>User::STATUS_CLUB_JOINED_APPROVED]);
});
}
Search модели Eventpublic function search($params) {
$query = Event::find(); // я так понимаю вся движуха должна быть здесь или вынесена в EventQuery впоследствии
$this->scenario = 'search';
$dataProvider = new \yii\data\ActiveDataProvider([
'query'=>$query,
]);
if (!($this->load($params) && $this->validate())) {
return $dataProvider;
}
$query->andFilterWhere(['id' => $this->id]);
return $dataProvider;
}
Есть ли у кого время и возможность помочь с вопросом?