如何在HABTM CakePHP关系场景中以编程方式添加多个相关记录?

时间:2012-07-22 18:36:39

标签: cakephp cakephp-2.0 cakephp-appmodel

我已经设置了我的模型,以便用户属于组。这两者之间有一个有效的HABTM关系。

以下代码用于使用一些演示数据填充数据库。在以下代码段之前,“组”表已填充了一些样本组数据。

下面的代码段有效。它将记录添加到Users表,并且连接表(groups_users)也获得正确的条目。基本上,HABTM关系运作良好。

以下是我的问题:如何添加与多个组的关联,而不仅仅是单个关系?执行

'Group'=>array($group1, $group2)
而不是下面列出的
'Group'=>$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();

1 个答案:

答案 0 :(得分:0)

要为单个用户保存多个组,您必须在用户模型中定义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);

This link可能会帮助您理解'deep' => true选项。