我有一个Post
模型和Tag
模型,它们都是用HABTM关系正确设置的。我的数据库中也有一个名为posts_tags
的表,根据命名约定正确命名。
然而,我不能为我的生活工作如何保存标签随着一个帖子。在我的"添加帖子"页面,我有这个:
<?php echo $this->Form->create('Post'); ?>
<?php echo $this->Form->input('Post.title'); ?>
<?php echo $this->Form->input('Post.body'); ?>
<?php echo $this->Form->input('Tag.name'); ?>
<?php echo $this->Form->input('Post.slug'); ?>
<?php echo $this->Form->end('Publish'); ?>
在提交时调用这个动作:
public function add() {
if($this->request->is('post')) {
if($this->Post->saveAll($this->request->data)) {
$this->Session->setFlash('Post published!');
$this->redirect('/');
} else {
$this->Session->setFlash('Post unable to be saved!');
}
}
$this->set('pageTitle', 'Compose new blog post');
}
文章保存了,但没有保存标签或文章与标签之间的关系,Cake没有给我错误或警告。我要做什么才能让Cake保存标签和帖子并建立所需的关系?
编辑:这里是什么是在$this->request->data
转储正在使用saveAll()
保存到数据库:
array(
'Post' => array(
'title' => 'Blog post',
'body' => 'Testing this post',
'slug' => 'Blog-post'
),
'Tag' => array(
'name' => 'test-tag'
)
)
如果你的Tag和Post的关系是hasMany,试着改变:
<?php echo $this->Form->input('Tag.name'); ?>
<?php echo $this->Form->input('Tag.0.name'); ?>