2016-11-01 31 views
1

我試圖保存更多的數據來連接CakePHP 3中的表。 關聯如下所示:articles => model_tags < =>標記(表)。將數據保存到CakePHP 3的連接表

在TagsTable和文章表我有:文章和標籤之間

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

協會在model_tags表正確保存。但是我想將其他數據保存到model_tags表中的'model_name'字段中,因爲將來我希望將model_tags表用於其他模型。因此,在這種情況下,通過文章保存在model_tags中的所有標籤關聯都應在字段「model_name」字符串「articles」中有。

重點是 - 我應該在哪裏放置我的代碼?自從幾個小時以來,我正在與這個問題鬥爭。我認爲之前保存應該是最好的選擇。

我已經想通了,我可以把數據保存在單獨的記錄:

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

但是,當然在我的情況下,它不會工作,因爲我要拯救每篇文章一些標籤,所以會有model_tags表中也很少有關聯記錄。

如何以正確的方式將數據放入連接表中?

回答

0

你只是需要格式化數據陣列調用控制器中的保存方法類似

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

之前,希望這將有助於你