我的桌子很简单我的客户桌子和桌子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');
?>
没有任何东西可以工作没有多选择的观点,没有保存记录的能力我想知道什么是真正的问题,因为我在遵循文档时尽力而为谢谢你。
答案 0 :(得分:1)
请查看约定:http://book.cakephp.org/2.0/en/getting-started/cakephp-conventions.html
模型名称应为单数(Client
,Marque
),外键应包含附加_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'));
}