###背景
PHP(cakePHP)でまとめサイトを作っています。
HABTMの関係を用いて各記事にタグをつけて
保存したいのですがうまくできません。
###関連するデータとその関係性
postsテーブル→各記事のデータです。id,title,contentなどのデータが入っています。
tagsテーブル→タグデータです。id,nameの二つのデータです。
posts_tagsテーブル→postsとtagsをつなぐ中間テーブルです。id,post_id,tag_idの3つです。
記事作成時に、作成中の記事がどのタグと紐付いているかの情報を
posts_tagsテーブルに一緒に保存したいと考えています。
###困っていること
記事作成時に、posts_tagsテーブルにデータが登録できず困っています。
登録しようとしたデータをデバッグしてみたところ、 下記のようになっていました。
array( 'Post' => array( 'title' => 'hogehoge' ), 'Tag' => array( 'tag' => array( (int) 0 => '1', (int) 1 => '3' ) ) )
いろいろ調べたところ、下記のようになっていないと登録できないことまでは分かりました。
array( 'Post' => array( 'title' => 'hogehoge' ), 'Tag' => array( 'tag' => array('1','3' ) ) )
しかし、どうすればこのような形でデータを渡すことでできるようになるかがわかりません。
どなたかお詳しい方、ご教授をお願いいたします。。。
※SQLで直接posts_tagsテーブルにデータを登録することはできています。
また、登録したデータによってサイト上で記事とタグが紐づけられて表示できることも確認しています。
###該当のソースコード
PostsController.php public function add($id = null){ if ($this->request->is('get')){ }else{ if ($this->Post->save($this->request->data)) { $this->redirect(array('action' => 'index')); } } }
add.ctp <?php echo $this->Form->create('Post');?> <div>基本情報</div> <div class="form_label"><p>タイトル</p></div> <?php echo $this->Form->input('title', array('type' => 'text', 'label' => false));?> <div class="form_label"><p>タグ</p></div> <?php echo $this->Form->input('Tag.tag', array('type'=>'select','label' => false, 'multiple' => 'checkbox', 'options' =>$tags));?> <?php echo $this->Form->submit('登録する', array( 'id' => 'submit'));?> <?php echo $this->Form->end(); ?>
###補足情報(言語/FW/ツール等のバージョンなど)
・cakephp2.7.3
・サーバ: Localhost via UNIX socket
・サーバの種類: MySQL
・サーバのバージョン: 5.5.38 - Source distribution
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/03 08:45