我正在编写一个非常简单的博客应用程序,使用CakePHP来帮助我学习框架。博客帖子可以包含许多标签,标签可以属于许多博客帖子(如StackOverflow)。这是我的数据库模式,其外键反映了这一点:
我与CakePHP建立了hasAndBelongsToMany
和Post
模型之间的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的做法一样。
答案 0 :(得分:1)
我建议将表名“posts_tags”更改为“post_tags”并添加字段
"joinTable" => "post_tags";
在HABTM功能中 以及如何添加标签?从相同的观点或其他观点??
答案 1 :(得分:0)
检查我们的插件https://github.com/cakedc/tags
它正是这样做的,你只需几行即可集成它。