2016-11-01 7 views
1

CakePHP 3のテーブルに結合するための追加データを保存しようとしています。 アソシエーションは、articles => model_tags < =>タグ(テーブル)のように見えます。 TagsTableや記事表にCakePHPのテーブルに結合するデータを保存する3

私が持っている:記事とタグの間の

$this->belongsToMany('Tags', [ 
     'joinTable' => 'model_tags', 
     'foreignKey' => 'foreign_id' 
    ]); 

関連はmodel_tagsテーブルに正しく保存されています。しかし、私はmodel_tagsテーブルの 'model_name'フィールドに追加のデータを保存したいと思います。将来、model_tagsテーブルを別のモデルに使用したいからです。その場合、article_tagsに保存されたすべてのタグ関連は、 'model_name'文字列 "articles"フィールドに含まれている必要があります。

主なポイントはある - どこ私は自分のコードを置く必要がありますか?私はこの問題で数時間も戦っています。私はbeforeSaveが最良の選択肢であるべきだと思います。

$tag = $this->Tags->findByTitle('heregoestagtitle')->first(); 
$tag->_joinData = $this->ModelTags->newEntity(); 
$tag->_joinData->model_name = 'articles'; 
$this->Tags->link($entity, [$tag]); 

しかし、もちろん、私の場合、それは私が記事ごとにいくつかのタグが保存されますので、動作しませんので、そこに次のようになります。

はすでに私が別のレコードにデータを置くことができることを、考え出しましたまた、model_tagsテーブル内の関連レコードもほとんどありません。私は正しい方法でテーブルを結合するにデータを置くことができますどのように

?あなたが前に

foreach ($this->request->data['model_tags'] as $key => $value) {  
    $this->request->data['model_tags'][$key]['_joinData']['model_name '] = 'articles'; 
} 

のようなコントローラでの保存メソッドを呼び出すだけで、データアレイをフォーマットする必要が

答えて

0

は、それはあなたに

を助けることを願っています
関連する問題