当我尝试将一些条目添加到两个类的连接表中时,我遇到了CakePHP的问题。
这是我的联接表:
posts_comments
id
post_id
comment_id
我的帖子模型:
<?php
class Post extends AppModel {
var $hasManyAndBelongsTo = array('Comment')
}
?>
我的评论模型:
<?php
class Commentextends AppModel {
var $hasAndBelongsToMany = array('Post');
}
?>
我的控制器:
ForumController:
function save() {
if ($this->data) {
$this->loadModel('PostComment');
$this->layout = null;
debug($this->data);
$this->PostComment->save($this->data);
}
$this->redirect(array('action' => 'view', $this->data['PostComment']['PostId']));
}
我的观点.ctp:
<?php
echo $this->Form->create('PostComment', array('url' => 'save', 'id' => 'save')); ?>
echo $this->Form->hidden('PostComment.PostId', array('value' => $id));
echo $this->Form->input('PostComment.CommentId', array('label' => '', 'type' => 'select', 'multiple' => 'checkbox', 'options' => $CommentName, 'selected' => $CommentId));
echo $this->Form->submit('save', array('id' => 'submit'));
echo $this->Form->end();
?>
当我点击submit
时,没有提交任何内容,并且重定向发生了,但我的$this->data
中包含的数据未保存在我的BDD中。
但我想要的是,当我提交表单时,我不希望CakePHP创建新帖子或新评论,我只想在两者之间建立新关系。
我已经成功完成了,但我用了
$this->myObject->query("INSERT INTO blablabla")
问题是我有多个复选框,所以我真的不知道如何轻松检查是否取消选中或检查了一个复选框。
答案 0 :(得分:0)
如果您创建另一个具有两个hasMany关系的模型而不是一个具有HABTM的模型,则可以更简单的方式工作。
两个模型之间的HasAndBelongsToMany实际上是简写 通过hasMany和belongsTo关联的三个模型 关联。
我发现这是保存和检索数据的最简单方法之一。
在新模型中,您可以执行以下操作:
public addRecord($userId, $postId)
$this->data[$this->alias]['user_id'] = $userId;
$this->data[$this->alias]['post_id'] = $postId;
return $this->save($this->data[$this->alias]);
}