1

フレームワークの学習に役立つように、CakePHP を使用して非常に単純なブログ アプリケーションを作成しています。ブログ投稿には多くのタグを付けることができ、タグは多くのブログ投稿に属することができます (StackOverflow のように)。これを反映する外部キーを使用したデータベース スキーマを次に示します。

ここに画像の説明を入力

私は自分とモデルhasAndBelongsToManyの間の関係を CakePHP で設定しました(これは正しい方法だと思いますか?)。これは次のようになります。PostTag

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 のやり方とよく似ています。

4

2 に答える 2

1

テーブル名「posts_tags」を「post_tags」に変更し、フィールドを追加することをお勧めします

"joinTable" => "post_tags"; 

HABTM機能で、どのようにタグを追加していますか?? 同じビューまたは別のビューから??

于 2013-08-12T15:16:37.470 に答える
0

プラグインをチェックしてください https://github.com/cakedc/tags

まさにそれを行っており、ほんの数行で統合できます。

于 2013-01-06T19:54:46.213 に答える