CakePHP3多对多的关系

时间:2014-12-01 18:25:44

标签: php cakephp many-to-many cakephp-3.0

我正在尝试在CakePHP3中保存一个具有多对多关系的表单,但我无法正确呈现表单。 (用户HABTM标签)

在我的控制器中,我设置了我想要编辑的对象:

$user = $this->Users->get($id, [
    'contain' => ['Tags']
]);
$this->set(compact('user'));

在视图中我有:

$options = [
    '1' => 'Tag 1',
    '2' => 'Tag 2'
];
echo $this->Form->select('tags', $options, [
    'multiple' => 'checkbox'
]);

我的问题是负载没有选中所选标签,我该如何解决?

1 个答案:

答案 0 :(得分:2)

对于这样的belongsToMany关联,您应该使用fieldname中的_ids键,这样表单帮助程序可以神奇地获取值并检查您的框。

$this->Form->select('tags._ids',  /* ... */);

获取一些信息。

此外,您应该从表中检索标签列表,而不是在视图中手动定义它们

<强>控制器

// ...
$tags = $this->Users->Tags->find('list');
$this->set(compact('user', 'tags'));

查看

echo $this->Form->select('tags._ids', $tags, [
    'multiple' => 'checkbox'
]);

另请参阅 Cookbook > Finding Key/Value Pairs