2013-01-06 36 views
1

我正在使用CakePHP編寫一個非常簡單的博客應用程序來幫助我學習框架。博客文章可以有很多標籤,標籤可以屬於很多博客文章(如StackOverflow)。這裏的外鍵我的數據庫架構,以反映這一點:自動在CakePHP博客中發佈帖子和標籤關係

enter image description here

我已成立了一個hasAndBelongsToMany關係我PostTag模型之間有CakePHP的(我認爲這是做正確的方式?),這看起來是這樣的:

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

檢查我們的插件了https://github.com/cakedc/tags

據正是這樣做的,你可以用它只需幾行整合。

+1

感謝您的建議,但我寧願自己實施。就像我說的我爲了學習的目的而這樣做,所以只需拖動一個插件就不會教我很多,儘管我會仔細查看您的代碼,謝謝! –

1

我建議修改表名「posts_tags」到「post_tags」,加上現場

"joinTable" => "post_tags"; 
在HABTM功能

和你如何添加標籤?從相同的觀點或其他觀點?

相關問題