使用HABTM关系保存帖子标签

时间:2013-01-07 00:26:10

标签: php cakephp has-and-belongs-to-many

我有一个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'
    )
)

1 个答案:

答案 0 :(得分:0)

如果你的Tag to Post的关系是hasMany,请尝试更改:

<?php echo $this->Form->input('Tag.name'); ?>

<?php echo $this->Form->input('Tag.0.name'); ?>