在CakePHP博客中自动发布帖子和标签关系

时间:2013-01-06 16:34:56

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

我正在编写一个非常简单的博客应用程序,使用CakePHP来帮助我学习框架。博客帖子可以包含许多标签,标签可以属于许多博客帖子(如StackOverflow)。这是我的数据库模式,其外键反映了这一点:

enter image description here

我与CakePHP建立了hasAndBelongsToManyPost模型之间的Tag关系(我认为这是正确的方法吗?),如下所示:< / p>

class Post extends AppModel {
    public $name = 'Post';

    public $hasAndBelongsToMany = array(
        'Tag' =>
            array(
                'className'              => 'Tag',
                'foreignKey'             => 'post_id',
                'associationForeignKey'  => 'tag_id',
                'unique'                 => true
            )
    );
}

class Tag extends AppModel {
    public $name = 'Tag';

    public $hasAndBelongsToMany = array(
        'Post' => array(
            'className'              => 'Post',
            'foreignKey'             => 'tag_id',
            'associationForeignKey'  => 'post_id',
            'unique'                 => true
        )
    );
}

我还有一个非常简单的页面设置用于添加帖子,其视图如下所示:

<h1>Add blog post</h1>

<?php echo $this->Form->create('Post'); ?>
<?php echo $this->Form->input('title'); ?>
<?php echo $this->Form->input('body'); ?>
<?php echo $this->Form->input('slug'); ?>
<?php echo $this->Form->end('Publish'); ?>

我的问题是,是否有可能在我的添加页面上有一个输入字段,我可以输入标签名称(用空格分隔)然后让Cake自动在我的数据库中建立关系?就像StackOverflow的做法一样。

2 个答案:

答案 0 :(得分:1)

我建议将表名“posts_tags”更改为“post_tags”并添加字段

"joinTable" => "post_tags"; 

在HABTM功能中 以及如何添加标签?从相同的观点或其他观点??

答案 1 :(得分:0)

检查我们的插件https://github.com/cakedc/tags

它正是这样做的,你只需几行即可集成它。