CAKEPHP 2 HABTM无法正常工作

时间:2013-11-17 12:56:04

标签: cakephp

很多天我都想弄清问题。

我的桌子很简单我的客户桌子和桌子marques table,我创建了一个连接表clients_marques,其中包含以下字段(id,client_id,marque_id)。

这是我的客户模型:

var $hasAndBelongsToMany = array(
    'Marques' => array(
        'className' => 'Marques',
        'joinTable' => 'clients_marques',
        'foreignKey' => 'clients_id',
        'associationForeignKey' => 'marque_id',

    )
);

这是我的控制器

public function add(){



    if($this->request->is('post')){

       $this->loadModel('Clients');     
       $this->Clients->save($this->request->data);
       $this->redirect(array('controller'=>'clients','action'=>'index'));
       //pr($this->request->data);

    }else {

        /* Chargement des Marques */
        $this->loadModel('Clients');
        $this->set('Marques', $this->Clients->Marques->find('list'));

    }

}

最后是观点:

<?php

echo $this->form->create('Clients');
echo $this->form->input('nom_client');
echo $this->Form->input('Marques');
echo $this->form->end('Ajouter');

?>

没有任何东西可以工作没有多选择的观点,没有保存记录的能力我想知道什么是真正的问题,因为我在遵循文档时尽力而为谢谢你。

1 个答案:

答案 0 :(得分:1)

请查看约定:http://book.cakephp.org/2.0/en/getting-started/cakephp-conventions.html

模型名称应为单数(ClientMarque),外键应包含附加_id的小写下划线型号名称client_id,{{1} })。

HABTM变量应该是驼背复数(marque_id),而@MoyedAnsari指出它应该是marques而不是Form

您还缺少Model::create()来电。

提示:使用bake生成模型/控制器/视图/等。

另见

所以你的代码应该更像这样:

<强>协会

form

行动(简化逻辑)

public $hasAndBelongsToMany = array(
    'Marque' => array(
        'className' => 'Marque',
        'joinTable' => 'clients_marques',
        'foreignKey' => 'client_id',
        'associationForeignKey' => 'marque_id',
    )
);

另外,您还应该检查保存是否真的成功!

查看

public function add() {
    $this->loadModel('Client'); 

    if($this->request->is('post')) {
        $this->Client->create();
        $this->Client->save($this->request->data);
        $this->redirect(array('controller' => 'clients', 'action' => 'index'));
    }

    $this->set('marques', $this->Client->Marque->find('list'));
}