【发布时间】:2013-04-25 16:42:27
【问题描述】:
我有两个具有 HABTM(拥有并属于多个)关系的模型:Qsets 和 Questions。
以下操作(在 QsetsController.php 中)应导致 qsets_questions 表中的新行,新问题出现在新 qset 中。但它会更新现有行,从而导致该问题从以前的 qset 开始并添加到新的。
我做错了什么?
public function admin_add_question( $qset_id, $question_id) {
//find the qset...
$qset = $this->Qset->find('first', array('id'=>$qset_id));
$this->Qset->QsetsQuestion->create();
$data = array(
"Qset"=> array ("id"=>$qset_id),
"Question"=>array ("id"=>$question_id)
);
Controller::loadModel('Question');
$r= $this->Question->save($data);
$this->Session->setFlash('Question id['.$question_id.'] added.');
$this->redirect( $this->referer() );
}
如果我的描述不清楚,会发生这种情况:
在添加问题之前...
**Qset 1**
Question 1
Question 2
**Qset 2**
Question 3
Question 4
将问题 2 添加到 Qset 2 时应该发生什么
**Qset 1**
Question 1
Question 2
**Qset 2**
Question 3
Question 4
Question 2
会发生什么...
**Qset 1**
Question 1
<----removed
**Qset 2**
Question 3
Question 4
Question 2
更新: 这是我的 qsets_questions 表的转储:
CREATE TABLE `qsets_questions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`question_id` int(11) NOT NULL,
`qset_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=64 ;
解决方案:
这是工作版本,感谢@nuns
public function admin_add_question( $qset_id, $question_id) {
$this->Qset->QsetsQuestion->create();
$data = array(
"qset_id"=>$qset_id,
"question_id"=>$question_id
);
Controller::loadModel('Question');
$this->Question->QsetsQuestion->save($data);
$this->Session->setFlash('Question id['.$question_id.'] added.');
$this->redirect( $this->referer() );
}
【问题讨论】:
-
你能发布你的 qsets_questions 表的结构吗?
-
当然。我将它添加到问题中。谢谢!
标签: php mysql cakephp cakephp-2.0 cakephp-2.1