Cakephp 3 - 使用_joinData属于ToMany

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cakephp 3 - 使用_joinData属于ToMany相关的知识,希望对你有一定的参考价值。

我尝试在连接表中实现与其他数据的bolongsToMany关联。连接表包含外键列和附加列“上下文”

articlesController:
$article = $this->Articles->patchEntity($article, $this->request->getData());
debug($article);die;


and in a Plugin-Behavior:
public function beforeMarshal(Event $event, ArrayObject $data, ArrayObject $options)
{
  $data['Categories.Categories'] = ['id' => '1', '_joinData' => ['context' => 'Tag']];
  debug($data);
}

我希望在连接表中保存上下文,但事实并非如此。 debgger说:

/plugins/Categories/src/Model/Behavior/CategorizeableBehavior.php (line 37)
object(ArrayObject) {
    name => 'dfa'
    description => 'er'
    Categories.Categories => [
        'id' => '1',
        '_joinData' => [
            'context' => 'Tag'
        ]
    ]
}
/src/Controller/ArticlesController.php (line 56)
object(AppModelEntityArticle) {

    'name' => 'dfa',
    'description' => 'er',
    '[new]' => true,
    '[accessible]' => [
        'name' => true,
        'description' => true,
        'created' => true,
        'modified' => true
    ],
    '[dirty]' => [
        'name' => true,
        'description' => true
    ],
    '[original]' => [],
    '[virtual]' => [],
    '[errors]' => [],
    '[invalid]' => [],
    '[repository]' => 'Articles'

}

我的类别和背景在哪里。我的代码出了什么问题?

答案

如果要附加连接数据,则需要在嵌套数组中。

$data['Categories.Categories'] = [
      ['id' => '1', '_joinData' => ['context' => 'Tag']]
];

它必须是一个嵌套数组,以便您可以附加多个记录(如果您也想要)。

以上是关于Cakephp 3 - 使用_joinData属于ToMany的主要内容,如果未能解决你的问题,请参考以下文章

Cakephp 3 保存关联属于ToMany

CakePHP:将数据保存到 3 个不同的模型

cakephp 保存相关的属于

将数据保存到 2 个表中 cakephp 3

CakePHP 中的多级模型关联

CakePHP 3 连接表关联