繁体   English   中英

将数据保存到CakePHP 3中的连接表

[英]Save data to join table in CakePHP 3

我正在尝试将其他数据保存到CakePHP 3中的连接表中。关联看起来像:articles => model_tags <=>标签(表格)。

在TagsTable和文章表格中,我得到了:

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

文章和标签之间的关联在model_tags表中正确保存。 但我想将其他数据保存到model_tags表中的字段'model_name',因为将来我想将model_tags表用于其他模型。 因此,在这种情况下,通过文章保存在model_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表中也会有很少的关联记录。

如何以正确的方式将数据放入连接表?

您需要在调用控制器之类的save方法之前格式化数据数组

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

希望它会对你有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM