我正在尝试创建一个使用HABTM关系的表单。连接表具有作为另一个表的外键的字段。我需要将数据输入其中一个字段。它甚至可能吗?
实施例
model1(id,field1,field2) model2(id,field1,field2) model3(id,field1,field2)
joinmodel(连接model1和model2的外键,但是属于model3。
表单中有来自model1和model1的字段没有问题,但是joinmodel-> model1(field1)的字段是我得到的。
我不确定这是非常清楚我想要完成的事情。如果这没有意义,我会发布我的真实模型数据。
答案 0 :(得分:0)
我认为可以这样做,在声明表单元素时,您将执行以下操作:
echo $this->Form->input('Model1');
echo $this->Form->input('Model2');
echo $this->Form->input('Model3');
echo $this->Form->input('field');
然后在控制器中你会$this->Model1->saveAll($this->data);
你可以做的另一种方法是保存模型数据,让我们说Model2有一个模型1和3的外键,然后你先保存模型1和3,将ID分配给Model2中的相应字段,保存Model2。当然都在控制器中。
答案 1 :(得分:0)
如果你有相关的表,并且你想要填写表格,那么你可以放这样的东西。
$this->Form->input('Model1.0.field1');
$this->Form->input('Model1.0.field2');
$this->Form->input('Model2.0.field1');
$this->Form->input('Model2.0.field2');
如果你排第二行,你可以给出
$this->Form->input('Model1.1.field1');
$this->Form->input('Model1.1.field2');
$this->Form->input('Model2.1.field1');
$this->Form->input('Model2.0.field2');
依旧......
最后,您可以使用
一次保存所有数据$this->Model->saveAll($this->data);
模型是您创建表单的视图的主要模型。 这也将适用于所有模型验证。
保存在控制器中时,您可以使用
$this->Model1->saveAll($this->data);