Hi all,
Has anyone written up a tutorial on how to handle and create a form for a many to many relationship? I see people asking the question (some years old) but can’t find what I thought would be a straight forward solution.
Hi all,
Has anyone written up a tutorial on how to handle and create a form for a many to many relationship? I see people asking the question (some years old) but can’t find what I thought would be a straight forward solution.
I dont know of a tutorial like that. Can you provide more information and an example?, maybe we can help out =)
OK.
Say I have a table that contains users (User) for which each user can select a number of groups that they want to belong to. I would therefore have a seperate table named something like User_has_Group to store the user/group relationships.
I could list all the available groups with CHtml::listBox() in a form but I don’t know what I need to do to:
Pre-populate the box with alerady saved friends
save the friends in the User_has_User table in the Yii way
Any ideas?
EDIT: The listBox will have the multiple attribute set to allow multiple selections.
i would do it like this:
get names/id from tbl_groups to populate form inputs (multi select box or checkboxes)
get group_id from tbl_user_has_group where user_id = current user, make form items selected.
user submits form, get params. on group items use ActiveRecord (http://www.yiiframework.com/doc/guide/1.1/en/database.ar) to do do something like this:
...
foreach ($groups as $groupId)
{
if (!$groupId==FALSE)
{
$userHasGroup = new UserHasGroup;
$userHasGroup->userId = $user->id;
$userHasGroup->groupId = $groupId;
if (!$userHasGroup->save()) print_r($userHasGroup->errors);
}
}
...
Also check these out!:
Thanks 3amsleep,
I think I glanced over the LarryUllman post but as he defines the relationship as a HAS_MANY in relations() I didn’t think it was what I was after.
However I have created a variation of his example and have it working well. If I get a chance over the weekend I would like to make my own blog post illustrating how this can be done.
I Think the best way to do it is to make models for "middle" tables (like user_has_group) and use "Through" relations instead of MANY_MANY (MANY_MANY is pretty much deprecated and it wont be included into Yii 2.0).
Also, give With Related Behavior Extension a try, it’s made by the yii team and maybe it’s all you need =).