我的 CakePHP 应用程序有以下设置:
Posts
id
title
content
Topics
id
title
Topic_Posts
id
topic_id
post_id
所以基本上我有一个主题(标签)表,它们都是唯一的并且有一个 id。然后可以使用 Topic_Posts 连接表将它们附加到帖子。当用户创建新帖子时,他们将通过将主题输入到以逗号分隔的文本区域来填写主题,然后如果它们不存在,则将它们保存到主题表中,然后将引用保存到 Topic_posts 表中。我的模型设置如下:
岗位型号:
class Post extends AppModel
{
public $name = 'Post';
public $hasAndBelongsToMany = array(
'Topic' => array('with' => 'TopicPost')
);
}
主题模型:
class Topic extends AppModel
{
public $hasMany = array(
'TopicPost'
);
}
主题帖子模型:
class TopicPost extends AppModel {
public $belongsTo = array(
'Topic', 'Post'
);
}
到目前为止,对于 New post 方法,我有这个:
public function add()
{
if ($this->request->is('post'))
{
//$this->Post->create();
if ($this->Post->saveAll($this->request->data))
{
// Redirect the user to the newly created post (pass the slug for performance)
$this->redirect(array('controller'=>'posts','action'=>'view','id'=>$this->Post->id));
}
else
{
$this->Session->setFlash('Server broke!');
}
}
}
如您所见,我已经使用过saveAll
,但是如何处理 Topic 数据?
我见过这样的事情:http ://bakery.cakephp.org/articles/dooltaz/2007/05/02/simple-tagging-behavior但我希望这样做更简单、更现代(那篇文章的日期2007) 我也在使用 CakePHP 2.1