モデル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 のポリシーを複数選択できます。
しかし、データを手動で保存しようとすると、Policy モデルの関連データが保存されません。
これが私のadd
コントローラーです-
public function 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);
-
Array
(
[CloudApp] => Array
(
[name] => 123
[policies] => Array
(
[0] => 18
[1] => 19
[2] => 20
)
)
)
私は何を間違っていますか?