0

ユーザーがグループに属するようにモデルをセットアップしました。これら 2 つの間には、機能する HABTM 関係があります。

以下のコードは、データベースにいくつかのデモ データを入力するために使用されます。次のスニペットの前に、Groups テーブルにはいくつかのサンプル グループ データが入力されています。

以下のコード スニペットは動作します。ユーザー テーブルにレコードを追加し、結合テーブル (groups_users) も正しいエントリを取得します。したがって、基本的に HABTM 関係は正常に機能します。

これが私の質問です:単一の関係だけでなく、複数のグループとの関連付けを追加するにはどうすればよいですか? する

'グループ'=>array($group1, $group2)
の代わりに
'グループ'=>$group1'
以下に概説するように動作しません。配列を使用すると、結合テーブルには何も追加されません。

あなたの助けは大歓迎です!

$groups = $this->Group->find('all');
  for ($i=0; $i<=200; $i++) {                   
$groupIndex1 = rand(0, count($groups)-1);
$groupIndex2 = rand(0, count($groups)-1);

$this->User->set(
  array(
    'id'=>null,
    'name'=>'Dummy User '.$i0,
    'Group'=>$groups[$groupIndex1]
  )
);
$this->User->save();
4

1 に答える 1

0

1人のユーザーに対して複数のグループを保存するにhasManyは、ユーザーモデルで関係を定義する必要があります。そして、保存コードでは次のようになります。

$groups = $this->Group->find('all');
for ($i=0; $i<=200; $i++) {                   
$groupIndex1 = rand(0, count($groups)-1);
$groupIndex2 = rand(0, count($groups)-1);
$data  = 
  array('User' => array(
                        'id'=>null, 
                        'name'=>'Dummy User '.$i0,
                       ),
        'Group'=> array($groups[$groupIndex1], $groups[$groupIndex2])
  )
);
$this->User->saveAssociated($data, array('deep' => true);

このリンクは、オプションを理解するのに役立つ場合があり'deep' => trueます。

于 2012-07-23T11:46:00.903 に答える