我有一个与模型CloudApp
有 HABTM 关系的Policy
模型,例如:
class CloudApp extends AppModel {
public $displayField = 'name';
public $hasAndBelongsToMany = array(
'Policy' => array(
'className' => 'Policy',
'joinTable' => 'cloudapp_policies',
'foreignKey' => 'cloud_app_id',
'associationForeignKey' => 'policy_id',
'unique' => 'keepExisting',
)
);
}
Policy
模型看起来像这样-
class Policy extends AppModel {
public $belongsTo = 'CloudApp';
}
当我使用脚手架时,一切正常——我可以为我正在保存的 CloudApp 选择多项策略。
但是当我尝试手动保存数据时,策略模型中的关联数据没有得到保存。
这是我的add
控制器-
公共函数 add() { $this->loadModel('Policy'); $this->set('policies', $this->Policy->find('list', array('fields' => array('Policy.name') )));
if ($this->request->is('post')) {
pr($this->request->data);
$this->CloudApp->saveAll($this->request->data); }
}
add.ctp 看起来像这样-
echo $this->Form->create('CloudApp');
?>
<fieldset>
<legend><?php echo __('Add Application'); ?></legend>
<?php
echo $this->Form->input('name');
echo $this->Form->input('policies', array(
'multiple' => true
));
?>
</fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
pr($this->request->data);
is-的输出
Array
(
[CloudApp] => Array
(
[name] => 123
[policies] => Array
(
[0] => 18
[1] => 19
[2] => 20
)
)
)
我究竟做错了什么?