Yii, сохранение данных + таблица связей

regii

Новичок
Разбираюсь с yii и вот такая задача:

Есть таблица юзеров
table users
id
name

есть таблица групп пользователей
table user_groups
id
name

а также таблица связи между юзером и группой(один юзер может состоять в множестве групп)
table user_to_group
user_id
group_id

сделал вывод списка пользователей и редактирование пользователя через CActiveRecord

но на странице редактирования пользователя нужно также вывести список групп с чекбоксами, чтобы можно было выделить, к каким группам относится юзер.

Для этого сделал модель UserGroups extends CActiveRecord, выборку реализовал.

Соответственно, вопрос в том, как при сохранении измененных настроек пользователя сохранить группы, к которым он относится, т.е. как заполнить таблицу user_to_group?
Или это обрабатывается вручную и формируются свои запросы к бд?
 

MiksIr

miksir@home:~$
ну как-то вроде
foreach ($groups as $group_id) {
$gg = new UserToGroup();
$gg->group_id = $group_id;
$gg->user_id = $user->id;
$gg->save();
}

Ну и обработка того, что такая пара (group_id,user_id) уже есть - или предварительная выборка и проверка или ловля и игнорирование db эксепшенов.

Кстати, обратите внимание на это - возможность прописать связь в User, что бы получить сразу объекты групп.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
regii
ActiveRecord - это интерфейс для мапинга конкретных записей
проще всего сохранять в цикле, как написал MiksIr, для более сложных задач я делал коллекцию (код могу опубликовать),
если критична скорости выполнения - можно сделать в UserGroups метод, в котором руками написать sql-запрос, и выполнять по циклу, а в контроллере обернуть его вызов в транзакцию.

и да, выборка напрямую из UserGroups не нужна, пропиши relations и вызывай из User
 
Сверху