contact、group、および contact_group の 3 つのテーブルがあります。
モデル関係はすべて適切に設定されています。
Contact.php
'groups' => array(self::MANY_MANY, 'Group', 'contact_group(contact_id,group_id)'),
Group.php
'contacts' => array(self::MANY_MANY, 'Contact', 'contact_group(group_id,contact_id)'),
リレーションシップを手動で作成すると、Yii の Active Record を使用して問題なくクエリを実行できます。
私が達成しようとしているのは、ユーザーが連絡先を作成するときに、最初に連絡先をグループに割り当てることができるようにフォームを作成することです。私のフォームは次のようになります。
<?php echo $form->dropDownListRow($model, 'groups', Group::getActiveGroups(), array('multiple'=>true)); ?>
これは完全に表示され、すべてのグループが希望どおりに表示されます。ユーザーが 1 つまたは 2 つのグループを選択すると、送信されます。ユーザーをテーブルに保存するために必要なcontact_group
ことはそれだけだと思っていましたが、そうではありません。挿入を処理するためにイベントを起動することはできますがafterSave
、Yii がこれを単独で処理するために何かを行うかどうかを確認したかっただけです。