0

モデル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
                )

        )

)

私は何を間違っていますか?

4

0 に答える 0