我正在使用 CakePHP 编写一个非常简单的博客应用程序来帮助我学习框架。博客文章可以有许多标签,标签可以属于许多博客文章(如 StackOverflow 上的)。这是我的带有外键的数据库模式来反映这一点:
我已经用 CakePHP 在我的模型和模型之间建立了hasAndBelongsToMany
关系(我认为这是正确的方法吗?),如下所示:Post
Tag
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 的做法。