フレームワークの学習に役立つように、CakePHP を使用して非常に単純なブログ アプリケーションを作成しています。ブログ投稿には多くのタグを付けることができ、タグは多くのブログ投稿に属することができます (StackOverflow のように)。これを反映する外部キーを使用したデータベース スキーマを次に示します。
私は自分とモデルhasAndBelongsToMany
の間の関係を CakePHP で設定しました(これは正しい方法だと思いますか?)。これは次のようになります。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 のやり方とよく似ています。