我试图将其他数据保存到CakePHP 3中的连接表中。 协会看起来像:articles => model_tags< =>标签(表格)。
在TagsTable和文章表I中:
$this->belongsToMany('Tags', [
'joinTable' => 'model_tags',
'foreignKey' => 'foreign_id'
]);
文章和标签之间的关联在model_tags表中正确保存。但我想将其他数据保存到字段' model_name'在model_tags表中,因为将来我想将model_tags表用于另一个模型。因此,在这种情况下,通过文章保存在model_tags中的所有标签关联都应该包含在字段“model_name'字符串"文章"。
重点是 - 我应该把代码放在哪里?我几个小时后就在解决这个问题。我认为beforeSave应该是最好的选择。
我已经想通了,我可以将数据放在单独的记录中:
$tag = $this->Tags->findByTitle('heregoestagtitle')->first();
$tag->_joinData = $this->ModelTags->newEntity();
$tag->_joinData->model_name = 'articles';
$this->Tags->link($entity, [$tag]);
但当然在我的情况下它不会起作用,因为我会为每篇文章保存很少的标签,因此在model_tags表中也会有很少的关联记录。
如何以正确的方式将数据放入连接表?
答案 0 :(得分:0)
您需要在调用控制器中的save方法之前格式化数据数组,如
foreach ($this->request->data['model_tags'] as $key => $value) {
$this->request->data['model_tags'][$key]['_joinData']['model_name '] = 'articles';
}
希望它能帮到你