如何设置嵌套关联模型

时间:2012-04-18 20:38:59

标签: php activerecord cakephp-2.1 cakephp-appmodel

我试图了解如何使用CakePHPsaveAssociated方法创建嵌套数据但没有成功,我写了一个模型结构Character> hasMany> PropertyGroupPropertyGroup> hasMany> Property

如何在添加视图中创建PropertyGroup与其属性之间的关系?

// Character Model
echo $this->Form->input('name', array ('label' => false, 'value' => 'Character name'));
echo $this->Form->input('description', array ('type' => 'textarea', 'label' => false, 'value' => 'Character description'));
// PropertyGroup Model
echo $this->Form->input('PropertyGroup.0.name', array ('label' => false, 'value' => 'Group name'));
echo $this->Form->input('Property.0.name', array ('label' => false, 'value' => 'Property name'));
echo $this->Form->input('Property.0.value', array ('label' => false, 'value' => 'Property value'));

echo $this->Form->end('Add character');

如果我想创建多个PropertyGroups,我的问题就会出现,所以:

PropertyGroup.0.name
    Property.0.name
    Property.0.value
    Property.1.name
    Property.1.value

PropertyGroup.1.name
    Property.0.name
    Property.0.value
    Property.1.name
    Property.1.value

如何将表单设置为与多个PropertyGroups兼容?

我可以通过javascript来通过jQuery克隆我需要的输入并增加id,但我不知道如何使用Properties来实现。

1 个答案:

答案 0 :(得分:0)

在一个关系之后,您必须为其他属性组提供别名并将它们绑定到模型...

$this->Character->bindModel('PropertyGroup2', array('className' => 'PropertyGroup'));

然后将它们引用为PropertyGroup和PropertyGroup2。

如果在许多情况下需要多个属性组,只需在hasMany数组中绑定PropertyGroup2,并确保设置classMame,以便引用PropertyGroup类。